/ / PythonでHDF5コンパイルdtype配列を読み込む高速な方法は何ですか? - Python、配列、numpy、h5py

PythonでHDF5コンパイルdtype配列を読み込む高速な方法は何ですか? - Python、配列、numpy、h5py

私は20のデータセットを持つHDF5ファイルを持っており、それぞれに200行の複合dtype ("<r4", "<r4", "<i4") ここで、dtypeの各構成要素は、a1-D変数。私は、各ファイルを開き、独自の変数に列のコンポーネントを割り当てるのに約2秒かかることがわかりました。これは私にとっては非常に遅いようです。私はh5pyとnumpyを使用してファイルを開いて、numpy配列に読み込みます:

import numpy as np
import h5py
...
f = h5py.File("foo.hdf5", "r")
set1 = f["foo/bar"]
var1 = np.asarray([row[0] for row in set1])
var2 = np.asarray([row[1] for row in set1])
var3 = np.asarray([row[2] for row in set1])

これらのデータセットから変数を抽出するより速い方法がありますか?

hdfviewを使ったデータセットのスクリーンショットです: hdfview

回答:

回答№1の場合は3

はるかに高速な方法(〜0.05秒)は、データセットを配列に変換し、フィールドを名前で参照することです。

import numpy as np
import h5py
...
f = h5py.File("foo.hdf5", "r")
set1 = np.asarray(f["foo/bar"])
var1 = set1["var1"]
var2 = set1["var2"]
var3 = set1["var3"]