У меня есть тип данных, который выводится в виде ~ 28 миллионов целых чисел в диапазоне от 0 до 4095 (Технически это происходит из аппаратного обеспечения в виде 16-разрядных целых чисел со знаком в диапазоне от 0 до (1/2) * 2 ^ 16, но это представление излишне точное). Следовательно, в принципе, значение каждого datapoint может быть представлено 12 битами - байтом и небольшим количеством, если хотите. В долгосрочной перспективе я имею дело с умеренно большими объемами этих данных (терабайты в двузначных числах), которые я намерен хранить в виде двоичных файлов, поэтому очевидно, что сжатие без потерь до 75% размера будет приветствоваться.
Очевидно, я мог бы просто написать функцию, которая кодирует мои данные в логические значения и обратно, и использовать двоичные функции обработки Numpy для анализа. Однако я должен сбалансировать это с легкостью / скоростью хранения и извлечения. Поэтому мне интересно, есть ли какой-нибудь существующий пакет, алгоритм и т. Д., Который выполняет это простым и эффективным способом. Я могу работать с Fortran или C, если мне нужно, поэтому есть возможность сделать модуль для них, но мои коллеги предпочли бы, если бы я этого не сделал.