【问题标题】:Input a list of arrays of numbers in h5py在 h5py 中输入数字数组列表
【发布时间】:2017-11-09 23:49:32
【问题描述】:

我试图使用 h5py 将数值数组的列表输入到 HDF5 文件中。例如:

f = h5py.File('tester.hdf5','w')
b = [[1,2][1,2,3]]

这会引发错误。

TypeError: Object dtype dtype('O') has no native HDF5 equivalent

所以我假设 HDF5 不支持这个。

就像您可以使用特殊数据类型存储字符串列表一样,是否也可以使用数字数组列表。

H5py store list of list of strings

如果不是,还有什么其他合适的方法来存储这样的列表,我以后可以从内存中访问。

提前感谢您的帮助

【问题讨论】:

  • 我想我可以pickle.dump 它。但我试图将一个巨大的数据集放在一个文件中。如果 HDF5 可以接受它会有所帮助,这就是我对此感到好奇的地方。

标签: python arraylist hdf5 h5py


【解决方案1】:

您可以将列表列表拆分到单独的数据集中并单独存储:

import h5py
my_list = [[1,2],[1,2,3]]
f = h5py.File('tester.hdf5','w')
grp=f.create_group('list_of_lists')
for i,list in enumerate(my_list):
    grp.create_dataset(str(i),data=list)

这样做之后,您可以像以前一样对数据集进行切片,但要稍加改动:

In[1]: grp[str(0)][:].tolist()
Out[1]: [1, 2]
In[2]: grp[str(1)][:].tolist()
Out[2]: [1, 2, 3]

【讨论】:

  • 添加了少量代码行,但这似乎是一种可行的方法。谢谢。
猜你喜欢
  • 2014-01-22
  • 2014-02-19
  • 2017-03-15
  • 2014-11-18
  • 1970-01-01
  • 2015-02-24
  • 2016-07-17
  • 1970-01-01
  • 2018-08-21
相关资源
最近更新 更多