我正在努力生成数据的 .h5 文件,如附图所示的格式。
我不知道如何在每个单元格中设置一个“数组”。
我已经检查了h5py的手册,但我仍然困惑我应该使用什么样的'dtype'
或者它可能不是简单的写法,如 'dset1 = grp1.create_dataset("Bnx", data = Bn1, dtype='float64')'
那么,我怎样才能做到呢?
如有任何帮助,我们将不胜感激。
HDF5 支持一些没有直接 NumPy 等效项的数据类型。例如,没有用于可变长度字符串、可变长度数据(又名“不规则数组”)或枚举类型引用的 NumPy dtype。 h5py 使用“特殊类型”扩展了 dtype 系统,以告诉 HDF5 如何存储此数据。参考:h5py 文档:特殊类型(还有一种“不透明数据类型”,可用于存储一些其他数据类型,但不能与对象数组一起使用。)
您可以使用可变长度数据类型将数组转换为数据集。 (注意:保存的数据不是像 HDFView 图像那样的数组。元数据附加到数据集以告诉 h5py 其内容。)读取数据时,单个元素被读取为 NumPy 数组,切片返回一个对象数组,其成员为数组。
下面简单的例子:
# Create a simple file:
with h5py.File("SO_77854356.h5","w") as h5w:
dt = h5py.vlen_dtype(np.dtype('float'))
ds = h5w.create_dataset("ds_of_arrs",shape=(5,4,3), dtype=dt )
a0, a1, a2 = ds.shape
for i in range(a0):
for j in range(a1):
for k in range(a2):
ds[i,j,k] = np.array([i,j,k],dtype=float)
# read data from the file:
with h5py.File("SO_77854356.h5") as h5r:
arr = h5r["ds_of_arrs"][:]
print(arr)