我有一个包含20个数据集的HDF5文件,每个数据集有200行复合dtype ('<r4', '<r4', '<i4')
,其中dtype的每个组件代表一维变量。我发现打开每个文件大约需要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的其中一个数据集的屏幕截图:
答案 0 :(得分: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"]