use*_*433 32 python arrays numpy h5py
我正在尝试覆盖一个numpy数组,这是一个相当复杂的h5文件的一小部分.
我正在提取数组,更改一些值,然后想要将数组重新插入到h5文件中.
我没有问题提取嵌套的数组.
f1 = h5py.File(file_name,'r')
X1 = f1['meas/frame1/data'].value
f1.close()
Run Code Online (Sandbox Code Playgroud)
我尝试过的代码看起来像这样但没有成功:
f1 = h5py.File(file_name,'r+')
dset = f1.create_dataset('meas/frame1/data', data=X1)
f1.close()
Run Code Online (Sandbox Code Playgroud)
作为一个完整性检查,我使用以下代码在Matlab中执行此操作,并且它没有任何问题.
h5write(file1, '/meas/frame1/data', X1);
Run Code Online (Sandbox Code Playgroud)
有没有人对如何成功做到这一点有任何建议?
ask*_*han 28
您想要分配值,而不是创建数据集:
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
Run Code Online (Sandbox Code Playgroud)
确认更改已正确完成并保存:
f1 = h5py.File(file_name, 'r')
np.allclose(f1['meas/frame1/data'].value, X1)
#True
Run Code Online (Sandbox Code Playgroud)
wea*_*rog 27
askewchan的答案描述了这样做的方法(你不能在已经存在的名称下创建数据集,但你当然可以修改数据集的数据).但请注意,数据集必须与X1
您写入的数据()具有相同的形状.如果要将数据集替换为不同形状的其他数据集,则首先必须将其删除:
del f1['meas/frame1/data']
dset = f1.create_dataset('meas/frame1/data', data=X1)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22000 次 |
最近记录: |