Una solución consiste en crear el conjunto de datos con compression
option. Por ejemplo, en Python usando h5py:
import h5py
f = h5py.File('my.h5', 'w')
d = f.create_dataset('a', dtype='f', shape=(512, 512, 512), fillvalue=-999.,
compression='gzip', compression_opts=9)
d[3, 4, 5] = 6
f.close()
El archivo resultante es de 4,5 kb. Sin compresión, este mismo archivo sería de aproximadamente 512 MB. Eso es una compresión del 99.999%, porque la mayoría de los datos son -999.
(o lo que sea fillvalue
que desee).
El equivalente puede lograrse mediante la API de C++ HDF5 configurando H5::DSetCreatPropList::setDeflate a 9, con un example shown in h5group.cpp.
[Esta respuesta] [1] proporciona una solución (solo Python). [1]: http://stackoverflow.com/a/22589030/2858145 –