【问题标题】:Python : Change datatype of hdf5 arrayPython:更改 hdf5 数组的数据类型
【发布时间】:2017-09-09 12:00:30
【问题描述】:

我有 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。

【问题讨论】:

    标签: python hdf5


    【解决方案1】:

    HDF5 User's Guide(第 6.3.2 节)明确表示:

    数据集的数据类型永远无法更改。

    另请参阅this 问题。

    【讨论】:

      【解决方案2】:

      这个可行,但它似乎很耗时,其他解决方案值得赞赏。

      创建一个新的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">
      

      【讨论】:

      • 您可以将try 加载到一个数组中,使用astype 进行转换,然后将其写回到同一个文件中。如果您想保留相同的名称,请使用del 删除原始名称。但是对同一个文件的读/写可能与对不同文件的读/写时间相同。
      猜你喜欢
      • 2020-03-20
      • 2013-08-02
      • 1970-01-01
      • 2019-08-02
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多