我有一个带有1100x1600数据点的2D矩阵。最初,我将它存储在一个ascii文件中,我使用命令tar- the压缩了该文件。
tar -cvzf ascii_file.tar.gz ascii_file现在,我想切换到hdf5文件,但是它们太大了,至少在我使用它们的方式中是这样的。首先,我使用c-过程将数组写入hdf5 5文件中。
H5Fcreate, H5Screate_simple, H5Dcreate, H5Dwrite按照这个顺序。数据不是在hdf-文件中压缩的,而且比较大,所以我使用命令对其进行压缩。
h5repack --filter=GZIP=9 hdf5_file hdf5_file.gzipped不幸的是,这个具有压缩内容的hdf文件仍然比压缩的ascii文件大5倍,参见下表:
file size
--------------------------
ascii_file 5721600
ascii_file.tar.gz 287408
hdf5_file 7042144
hdf5_file.gzipped 1117033现在我的问题是:为什么压缩的ascii文件要小得多,并且有办法使hdf文件更小?
谢谢。
发布于 2015-05-13 13:13:10
在阅读了Mark Adler's注释之后,我意识到这个问题有些愚蠢:在ascii情况下,值在一定数量的数字之后被截断,而在hdf情况下,“type”值(“type”=我所使用的数据类型的任何精度)被存储。
然而,有一种可能性可以进一步缩小我的hdf文件的大小:使用该选项应用洗牌筛选器。
--filter=SHUFhttps://stackoverflow.com/questions/30049527
复制相似问题