私は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を使ったデータセットのスクリーンショットです:
回答:
回答№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"]