Python 中读取 HDF5 复合 dtype 数组的快速方法是什么?

What is a fast way in Python to read HDF5 compound dtype arrays?

我有一个包含 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.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"]