我正在尝试覆盖一个numpy数组,它是一个非常复杂的h5文件的一小部分。

我正在提取一个数组,更改一些值,然后想将该数组重新插入到h5文件中。

我没有问题提取嵌套的数组。

f1 = h5py.File(file_name,'r')
X1 = f1['meas/frame1/data'].value
f1.close()

我尝试的代码如下所示,但未成功:
f1 = h5py.File(file_name,'r+')
dset = f1.create_dataset('meas/frame1/data', data=X1)
f1.close()

作为一个健全性检查,我使用以下代码在Matlab中执行了此操作,并且没有任何问题。
h5write(file1, '/meas/frame1/data', X1);

有人对如何成功执行此操作有任何建议吗?

最佳答案

您要分配值,而不是创建数据集:

f1 = h5py.File(file_name, 'r+')     # open the file
data = f1['meas/frame1/data']       # load the data
data[...] = X1                      # assign new values to data
f1.close()                          # close the file

要确认所做的更改是否正确保存,请执行以下操作:

f1 = h5py.File(file_name, 'r')
np.allclose(f1['meas/frame1/data'].value, X1)
#True

关于python - 如何使用h5py覆盖h5文件中的数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22922584/

10-14 17:39