Я пытаюсь отредактировать набор данных, предоставленный мне в формате hdf5, и сохранить его заново.Ранее я мог редактировать значения в файлах hdf5, но, похоже, в этом конкретном случае мой старый метод не работает (оба примера я покажу ниже).
У меня есть 3D-набор данных формы (101, 4, 2), который я извлекаю из файла HDF5.В этом примере я пытаюсь установить для каждого из значений значение с плавающей запятой 1,0.
file_name = r'C:\Labber\Data\2018\06\Data_0601\CSing.hdf5'
f = h5py.File(file_name, 'r+')
h5entry = f['/Data/Data']
for i in range(len(h5entry[:,0,0])):
print(h5entry[i][0][1]) #prints 0.0
h5entry[i][0][1] = 1.0
print(h5entry[i][0][1]) #still prints 0.0
Если я создаю пустой массив вместо ссылки на набор данных HDF5, я могу заставить это работать.
file_name = r'C:\Labber\Data\2018\06\Data_0601\CSing.hdf5'
f = h5py.File(file_name, 'r+')
entry = np.array(f['/Data/Data'])
for i in range(len(entry[:,0,0])):
print(entry[i][0][1]) #prints 0.0
entry[i][0][1] = 1.0
print(entry[i][0][1]) #prints 1.0
Но тогда у меня проблема с входом в формате массива, и я не могу легко установить набор данных равным массиву.Я потенциально мог бы создать новый набор данных из этого массива, удалить старый и переназначить новый, но это выглядит довольно неуклюжим образом.
Кроме того, ранее я мог напрямую редактировать ключи HDF5, что еще больше сбивает меня с толку.Например, я успешно выполнил следующее до
file_name = r'C:\Labber\Data\2018\06\Data_0601\CSing.hdf5'
f = h5py.File(file_name, 'r+')
entry = f['Step list'][i]
entry['use_relations'] = relations
f['Step list'][i] = entry
И это работает.Любые идеи о том, что здесь происходит и как я могу сделать это наиболее эффективным способом?