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

时间:2015-03-30 11:44:22

标签: python file numpy hdf5 h5py

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

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

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

我应该怎么做?

2 个答案:

答案 0 :(得分:2)

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

f['numbers'] + 5不起作用,因为数据集对象没有像__add__这样的方法。因此,Python解释器会为您提供unsupported错误。

添加[:]会产生ndarray,并提供全套numpy方法。

文档是否谈到将数据切片加载到内存中?

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

可能会改变部分。增加仍在记忆中完成。

请参阅之前的问题 How to store an array in hdf5 file which is too big to load in memory?

另一种选择是查看已编译的h5代码。可能有基于Fortran或C的脚本会对这些数据进行更改。您可以轻松地从Python中调用它们。

答案 1 :(得分:1)

您必须使用the actual numpy.add function

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

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