在h5py中存储空的numpy数组

时间:2014-02-02 21:08:47

标签: python numpy hdf5 h5py

我想将一些数据写入HDF5文件(因为我有大量的数据集,并且被告知HDF5可以很好地处理这些事情。)

我有一个带有一些值和一些numpy数组的Python 2.7字典。我想做的只是将字典转储到HDF5中。没有组或其他什么,只需将键值对放入HDF5。

但是,使用h5py,如果我在文件中写入一个空数组(或列表),我会得到:

>>> file["test"] = np.array([])
ValueError: zero sized dimension for non-unlimited dimension (Invalid arguments to routine: Bad value)

我无法相信HDF5不允许我将空数组放入其中。碰巧有时候我的清单是空的。无法帮助它。

我错过了什么?

谢谢: - )

2 个答案:

答案 0 :(得分:0)

这就是我使用的内容(因为你不需要小组,但你可能会改变主意,因此可能没有必要):

def save_group(outfile, d, group):
    with h5py.File(outfile, 'a') as g:
        for key in d:
            value = d[key]
            try:
                group.require_dataset(key, value.shape, value.dtype)
            except TypeError as e:
                del group[key]
                group.create_dataset(key, value.shape, value.dtype)
            group[key][...] = value
    return

要删除组参数:

group = g.require_group('/')

答案 1 :(得分:0)

如评论中所述,h5py 2.0.0不支持大小为零的数组。据我所知,这个功能似乎已添加到this pull request