在h5py

时间:2017-06-08 10:06:45

标签: python arraylist hdf5 h5py

我试图使用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

如果没有,那么存储这样一个列表的其他合适方法是什么,我可以稍后从内存中访问。

感谢您的帮助

1 个答案:

答案 0 :(得分:5)

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

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]