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)


arrow_upward
1
arrow_downward

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

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

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

person charlie80    schedule 22.03.2017

arrow_upward
0
arrow_downward

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

Создайте новый 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