多次元配列

Pythonで学ぶDaskによる並列プログラミング

James Fulton

Climate Informatics Researcher

多次元データの種類

  • 天気予報・観測
  • 3D 医用スキャン
  • 衛星画像
  • そのほかの科学機器のデータ
Pythonで学ぶDaskによる並列プログラミング

HDF5

HDF のロゴ

  • Hierarchical Data Format(階層型データ形式)
  • 階層構造に保存(サブディレクトリのように)
Pythonで学ぶDaskによる並列プログラミング

HDF5 ファイルの見た目は?

単一フォルダ

Pythonで学ぶDaskによる並列プログラミング

HDF5 ファイルの見た目は?

4 つのデータセットとメタデータを含む単一フォルダ。

Pythonで学ぶDaskによる並列プログラミング

h5py で HDF5 を操作する

import h5py

# Open the HDF5 file
file = h5py.File('data.hdf5')


# Print the available datasets inside the file print(file.keys())
<KeysViewHDF5 ['A', 'B', 'C', 'D']>
Pythonで学ぶDaskによる並列プログラミング

h5py で HDF5 を操作する

import h5py

# Open the HDF5 file
file = h5py.File('data.hdf5')


# Select dataset A dataset_a = file['/A']
print(dataset_a)
<HDF5 dataset "A": shape (10000, 100, 100), type "<f4">
Pythonで学ぶDaskによる並列プログラミング

HDF5 からの読み込み

import dask.array as da

# Load dataset into a Dask array a = da.from_array(dataset_a, chunks=(100, 20, 20))
print(a)
dask.array<array, shape=(10000, 100, 100), dtype=float32, chunksize=(100, 20, 20),
    chunktype=numpy.ndarray>
Pythonで学ぶDaskによる並列プログラミング

Zarr

  • HDF5 のような階層型データセット
  • チャンク分割を前提に設計
  • AWS や Google Cloud などでのストリーミングに適する
  • ファイル構造を辿れる
Pythonで学ぶDaskによる並列プログラミング

Zarr からの読み込み

import dask.array as da

a = da.from_zarr("dataset.zarr", component="A")


print(a)
dask.array<from-zarr, shape=(10000, 100, 100), dtype=float32,
    chunksize=(100, 20, 20), chunktype=numpy.ndarray>
Pythonで学ぶDaskによる並列プログラミング

¡Vamos a practicar!

Pythonで学ぶDaskによる並列プログラミング

Preparing Video For Download...