我想给数组添加一个常数值。该数组存储在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人建议。)