Python 通过h5py更换HDF5压缩滤波器
如何读取通过Python 通过h5py更换HDF5压缩滤波器,python,hdf5,h5py,Python,Hdf5,H5py,如何读取通过lzf压缩过滤器压缩的数据集,并将其更改为原生HDF5第三方过滤器,如szip或zlib?只需按中所示读取数据集,并在编写数据集时使用指定的压缩方式编写数据集,是否有效?正如@bnaecker所说,您可以复制现有数据集,并使用不同的压缩过滤器创建新数据集。新数据集可以位于同一文件中,也可以位于新文件中。注意:szip需要特殊许可,因此我创建了一个从lzf到gzip的示例。见下面的例子。对于任何2个压缩过滤器,过程都是相同的。只需更改compression=value import h
lzf
压缩过滤器压缩的数据集,并将其更改为原生HDF5第三方过滤器,如szip
或zlib
?只需按中所示读取数据集,并在编写数据集时使用指定的压缩方式编写数据集,是否有效?正如@bnaecker所说,您可以复制现有数据集,并使用不同的压缩过滤器创建新数据集。新数据集可以位于同一文件中,也可以位于新文件中。注意:szip
需要特殊许可,因此我创建了一个从lzf
到gzip
的示例。见下面的例子。对于任何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")
创建数据集后,您不能更改数据集的压缩,但您当然可以使用链接的方法在同一个文件或不同的文件中创建新数据集。