首页 > 解决方案 > 为什么即使所有数据集都压缩在文件中,压缩 HDF5 文件仍能获得大量压缩?

问题描述

我在我的桌面应用程序中使用 HDF5 文件系统。我对文件中的所有数据集都使用了 GZIP 5 级压缩。

但是当我使用 7zip 压缩 HDF5 文件时,文件大小变得更小了大约一半到三分之一

我遵循的过程是:

  1. 生成 HDF5 文件。
  2. 在文件中导入数据。
  3. 使用 h5repack 实用程序释放未计入的空间(如果有)。
  4. 使用 7zip 我将文件压缩为 .zip

这怎么可能?

更多压缩的范围在哪里?

如何生成更小的 HDF5 文件?关于使用属性(H5P)的任何建议。

我认为 7zip 可能会使用 GZIP 级别 9 无情地压缩我的文件,但我尝试在我的 HDF5 文件中使用 GZIP 级别 9。新文件大小仍然是原始文件的一半。

标签: compressionhdf5h5pypytableshdf

解决方案


gzip 的最大压缩比约为 1000:1。如果数据比这更可压缩,那么您可以再次压缩它以获得更多压缩(第二次可能再次使用 gzip)。您可以对仅包含零的文件进行简单的实验:

% dd ibs=1 count=1000000 < /dev/zero > zeros
% wc -c zeros
1000000
% gzip < zeros | wc -c
1003
% gzip < zeros | gzip | wc -c
64

那么你第一次压缩的压缩比是多少?


推荐阅读