How to overwrite array inside h5 file using h5py How to overwrite array inside h5 file using h5py numpy numpy

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)