Одним из обходных путей является создание набора данных с параметром compression
. Например, в Python, используя 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()
Полученный файл имеет размер 4,5 КБ. Без сжатия этот же файл будет около 512 МБ. Это сжатие на 99,999%, потому что большинство данных -999.
(или все, что вам нужно fillvalue
).
Эквивалент может быть достигнут с использованием API C ++ HDF5 путем установки H5 :: DSetCreatPropList :: setDeflate в 9, с примером , показанным в h5group.cpp .