我想为数组添加一个常量值。该数组存储在hdf5文件中。
f = h5py.File(fileName)
f['numbers'] = f['numbers'] + 5
给我一个错误TypeError: unsupported operand type(s) for +: 'Dataset' and 'int'
我应该怎么做?
答案 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人提出建议。)