我有一个名为file.h5
的H5文件,用于存储红外图像。此文件的大小为282KB:
$ ls -l -sh file.h5
688 -rw-r--r-- 1 user staff 282K Feb 2 00:25 file.h5
首先,我使用库h5py
在python中加载文件。
>> import h5py
>> hf = h5py.File('file.h5', 'r')
>> data = hf['infrared'][:]
然后,我将此相同数据(从282 KB H5文件中检索)存储为新的H5文件。
>> hf2 = h5py.File('file2.h5', 'w')
>> hf2.create_dataset('infrared', data=data)
由于没有对H5文件添加数据处理或新字段,我希望大小完全相同。然而,令我惊讶的是,我最终得到了一个2 MB大小的新H5文件!!
$ ls -l -sh file2.h5
4104 -rw-r--r-- 1 user staff 2.0M Feb 2 00:39 file2.h5
在下文中,我列出了每个数据集(来自旧文件和新文件)的注释中建议的一些参数。
>> hf['infrared']
<HDF5 dataset "infrared": shape (512, 512), type "<f8">
>> hf['infrared'].size
262144
>> hf['infrared'].shape
(512, 512)
>> hf['infrared'].dtype
dtype('float64')
>> hf['infrared'].chunks
(256, 256)
>> hf['infrared'].compression
'gzip'
>> hf['infrared'].shuffle
False
>> hf2['infrared']
<HDF5 dataset "infrared": shape (512, 512), type "<f8">
>> hf2['infrared'].size
262144
>> hf2['infrared'].shape
(512, 512)
>> hf2['infrared'].dtype
dtype('float64')
>> hf2['infrared'].chunks
>> hf2['infrared'].compression
>> hf2['infrared'].shuffle
False