Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过h5py更换HDF5压缩滤波器_Python_Hdf5_H5py - Fatal编程技术网

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")
创建数据集后,您不能更改数据集的压缩,但您当然可以使用链接的方法在同一个文件或不同的文件中创建新数据集。