我需要将一些数据写入 HDF5 文件,该文件将由数据处理应用程序读取。 我用 h5py 来做这件事。 但是,数据处理应用程序似乎只接受数组大小为 1 的属性,但是当我使用 h5py 创建属性时,我得到一个名为标量的数组大小。下图来自HDFView。
我明白,当我调用
dataset.attrs.create(key, value)
时,我可以设置属性的 dtype 和形状 h5py 文档。但我不明白我需要提供什么才能使数组大小始终为 1 而不是标量。特别是如上所示,其中一些似乎只是设置为开箱即用的。
我通过以下方式创建属性:
import h5py
if __name__ == '__main__':
out_file = h5py.File('tmp.h5')
data = [0, 1, 2, 3, 4]
attributes = {'sample': 1, 'option': 'tmp'}
out_file.create_dataset('tmp_dataset', data=data)
for attr_key, attr_value in attributes.items():
out_file['tmp_dataset'].attrs.create(attr_key, attr_value)
out_file.close()
我尝试将 dtype 指定为
float
等等。但好像没有效果。
好吧,我找到了解决这个问题的方法。
我没有发现这是我将用于创建的形状参数。因此,通过将上面的 MRE 链接为:
import h5py
if __name__ == '__main__':
out_file = h5py.File('tmp.h5')
data = [0, 1, 2, 3, 4]
attributes = {'sample': 1, 'option': 'tmp'}
out_file.create_dataset('tmp_dataset', data=data)
for attr_key, attr_value in attributes.items():
out_file['tmp_dataset'].attrs.create(name=attr_key, data=attr_value, shape=(1,))
out_file.close()
问题我已经解决了