【发布时间】:2014-02-26 06:49:24
【问题描述】:
我想将一些数据写入 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 不允许我将空数组放入其中。碰巧有时我的清单是空的。没办法。
我错过了什么?
谢谢:-)
【问题讨论】:
-
这对我来说似乎工作正常(使用 h5py v2.2.1)。不过,在我看来,更大的问题是为什么你会想要这样做。请注意,如果您以这种方式初始化数组,其
maxshape属性将为(0,),因此不可能在任何维度上增加其大小以实际存储任何内容。如果你想创建一个可以调整大小以容纳一些实际数据的数据集,我会使用file.create_dataset(..., maxshape=shape, ...)创建它,其中shape是一个包含每个维度中数组最大大小的元组。 -
我不打算稍后更改数据,它应该只是用作数据转储。但有趣的是它对你有用,我稍后会检查我的 numpy 版本。
-
你的 h5py 版本更可能是相关的
-
@ali_m :就是这样。似乎 h5py v2.0.0 还不支持空数组。如果您发表评论作为答案,我会接受。