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



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

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

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

我该怎么做?

f['numbers'][:]+=5工作。

f['numbers'] + 5不起作用,因为Dataset对象没有类似__add__的方法。因此Python解释器会给您unsupported错误。

添加[:]会得到一个ndarray,其中包含一整套numpy方法。

文档中不是谈到了将数据片段加载到内存中吗?

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

可能会起到更改部分的作用。添加操作仍在内存中进行。

查看前面的问题,如如何将数组存储在hdf5文件中,该文件太大,无法加载到内存中?

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

您必须使用实际的numpy.add函数:

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

(尽管我确实更喜欢你的语法。也许这值得向h5py人建议。)

最新更新