How to overwrite array inside h5 file using h5py
You want to assign values, not create a dataset:
f1 = h5py.File(file_name, 'r+') # open the filedata = f1['meas/frame1/data'] # load the datadata[...] = X1 # assign new values to dataf1.close() # close the file
To confirm the changes were properly made and saved:
f1 = h5py.File(file_name, 'r')np.allclose(f1['meas/frame1/data'].value, X1)#True
askewchan's answer describes the way to do it (you cannot create a dataset under a name that already exists, but you can of course modify the dataset's data). Note, however, that the dataset must have the same shape as the data (X1
) you are writing to it. If you want to replace the dataset with some other dataset of different shape, you first have to delete it:
del f1['meas/frame1/data']dset = f1.create_dataset('meas/frame1/data', data=X1)