将常量值添加到存储在 hdf5 文件中的数组

Add constant value to an array which is stored in an hdf5 file

我想向数组添加一个常量值。该数组存储在 hdf5 文件中。

f = h5py.File(fileName) 
f['numbers'] = f['numbers'] + 5

给我一个错误 TypeError: unsupported operand type(s) for +: 'Dataset' and 'int'

我应该怎么做?

你必须使用 the actual numpy.add function:

ds = f['numbers']
ds[:] = np.add(ds, 5)

(虽然我 更喜欢你的语法。也许这值得向 h5py 人建议。)

f['numbers'][:]+=5 有效。

f['numbers'] + 5 不起作用,因为 Dataset 对象没有像 __add__ 这样的方法。所以 Python 解释器给你 unsupported 错误。

添加 [:] 得到 ndarray,具有全套 numpy 方法。

文档中没有谈到将数据切片加载到内存中吗?

`f['numbers'][:10] += 5

可能会作为更改部分的方式。添加仍在内存中完成。

查看之前的问题,例如

另一种选择是查看编译后的 h5 代码。可能有基于 Fortran 或 C 的脚本会像这样更改数据。您可以轻松地从 Python.

调用它们