【问题标题】:Changing HDF5 compression filter via h5py通过 h5py 更改 HDF5 压缩过滤器
【发布时间】:2020-10-29 22:53:59
【问题描述】:

如何读取通过 lzf 压缩过滤器压缩的数据集并将其更改为原生 HDF5 第三方过滤器,如 szipzlib?会像How to read HDF5 files in Python 中所示的那样简单地读取它,并在写入数据集时使用指定的压缩来写入它吗?

【问题讨论】:

  • 一旦创建数据集,您就无法更改数据集的压缩,但您当然可以使用链接的方法来创建 new 数据集,可以在同一个文件中,也可以在不同的文件中。

标签: python hdf5 h5py


【解决方案1】:

正如@bnaecker 所说,您可以复制现有数据集并使用不同的压缩过滤器创建一个新数据集。新数据集可以在同一个文件中,也可以在新文件中。注意:szip 需要特殊许可,所以我创建了一个从lzfgzip 的示例。请参见下面的示例。任何 2 个压缩过滤器的过程都是相同的。只需更改compression=value

import h5py
import numpy as np

filename = "SO_64582861.h5"

# Create random data

arr1 = np.random.uniform(-1, 1, size=(10, 3))

# Create intial HDF5 file
with h5py.File(filename, "w") as h5f:
    h5f.create_dataset("ds_lzf", data=arr1, compression="lzf")
  
# Re-Open HDF5 file in 'append' mode
# Copy ds_lzf to ds_gzip with different compression setting
# could also copy to a second HDF5 file
with h5py.File(filename, "a") as h5f:
    # List all groups
    print("Keys: %s" % h5f.keys())
    arr2 = h5f["ds_lzf"][:]
    h5f.create_dataset("ds_gzip", data=arr2, compression="gzip")

【讨论】:

    猜你喜欢
    • 2016-09-24
    • 2020-10-27
    • 2014-11-20
    • 2016-01-30
    • 2020-08-19
    • 1970-01-01
    • 2019-08-29
    • 2017-12-12
    • 1970-01-01
    相关资源
    最近更新 更多