Python: изменить тип данных массива hdf5

У меня есть массив hdf5, как показано ниже:

>>> a = np.array([5,8])
>>> f = h5py.File('try.hdf5')
>>> f['try'] = a
>>> f['try']
<HDF5 dataset "try": shape (2,), type "<i4">

Я хочу изменить тип данных f['try'] на float64. Как это сделать?

a = a.astype('float64') подойдет для numpy, но я не знаю для hdf5.


person Kavan    schedule 07.04.2016    source источник


Ответы (2)


На Руководство пользователя HDF5 (раздел 6.3.2) четко говорит:

Тип данных набора данных никогда не может быть изменен.

Также см. этот вопрос.

person charlie80    schedule 22.03.2017

Этот работает, но, кажется, занимает много времени, другие решения приветствуются.

Создайте новый hdf5 файл

>>> f2 = h5py.File('try2.hdf5')
>>> f2['try2'] = f['try'][...].astype('float64')
>>> f2['try2']
<HDF5 dataset "try2": shape (2,), type "<f8">
>>> f['try']
<HDF5 dataset "try": shape (2,), type "<i4">
person Kavan    schedule 07.04.2016
comment
Вы можете загрузить try в массив, использовать astype для преобразования и записать его обратно в тот же файл. Если вы хотите сохранить то же имя, используйте del, чтобы удалить оригинал. Но чтение / запись в один и тот же файл, вероятно, занимает то же время, что и в другой файл. - person hpaulj; 09.09.2017