2

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

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

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

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

我不敢相信 HDF5 不允许我将空数组放入其中。碰巧有时我的清单是空的。没办法。

我错过了什么?

谢谢 :-)

4

2 回答 2

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 参数:

group = g.require_group('/')
于 2014-02-03T09:50:35.873 回答
0

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

于 2014-02-03T22:40:53.903 回答