在每个单元格中保存数组而不是单个数字时出现问题

问题描述 投票:0回答:1

enter image description here

我正在努力生成数据的 .h5 文件,如附图所示的格式。

我不知道如何在每个单元格中设置一个“数组”。

我已经检查了h5py的手册,但我仍然困惑我应该使用什么样的'dtype'

或者它可能不是简单的写法,如 'dset1 = grp1.create_dataset("Bnx", data = Bn1, dtype='float64')'

那么,我怎样才能做到呢?

如有任何帮助,我们将不胜感激。

h5py
1个回答
0
投票

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)
© www.soinside.com 2019 - 2024. All rights reserved.