Какой формат файла лучше всего подходит для хранения несжатой 2D -матрицы?

datascience.stackexchange https://datascience.stackexchange.com/questions/9877

  •  16-10-2019
  •  | 
  •  

Вопрос

Для того, что стоит, мой конкретный случай - симметричная матрица, но на этот вопрос следует ответить в целом.

Это было полезно?

Решение

Наиболее совместимый формат, безусловно, CSV/TSV. Это текст, и обычно вы можете Gzip его на лету с помощью программного пакета, который вы используете. Не существует широко стандартизированного формата для хранения данных матрицы матрицы. У Matlab есть свои *.mat-файлы, у Numpy *.npz, Stata и SAS есть свои собственные, ... Лучше всего просто использовать файл четкого текста.

Если матрица симметрична, если она очень большая или если их будет много, вы можете поэкономить 50% в космических требованиях, сохраняя только нижнюю (или верхнюю) треугольную часть. Если вы решили сделать это, опять же, нет широко распространенного формата. Просто храните форму сначала, а затем сплющенные 1D данных.

Другие советы

Я бы пошел с .csv как это общепринято и легко читается на разных языках программирования. Более того, вы можете просто открыть его с помощью офисного программного обеспечения. Если вы используете свою матрицу только в Python, я также рекомендую БИБЛИОТЕКА который пишет вашу матрицу в .п Формат и можно легко прочитать в Python с простой функцией нагрузки.

В качестве Возврат каретки/подача линии (CR/LF) может вызвать проблемы в зависимости от системы, я предлагаю сохранить матрицу «встроенный» или в растровый стиль с коротким заголовком, чтобы указать вашу конвенцию, номер версии (вы можете изменить свое мнение позже и увеличить версию) и т. Д. как минимум размер матрицы, а остальные в некотором текстовом формате (CSV, TSV). Это похоже на то, что делается в Портативная серая карта или формат изображения растрового изображения.

Я использовал это для хранения текста Фильтруя коэффициенты банка.

Минимальный пример может быть:2,3,0.1,1.2,2.3,3.4,4.5,5.6 Для матрицы $ 2 Times 3 $: begin {Array} 0.1 & 1.2 & 2.3 3.4 & 4.5 & 5.6 End {Array} Но вы можете использовать, например, #2,#3,0.1,1.2,2.3,3.4,4.5,5.6так что инопланетяне (подумайте о Золотая пионерская табличка) понять, что первые два целых числа «разные» и дают намеки на то, как следует читать следующие числа. С квадратной матрицей (типичной для симметричных матриц), это еще более интересно, так как вам нужен только один номер заголовка #n (Сторона) и острые читатели увидят, что оставшиеся цифры находятся в количестве $ n^2 $.

Вы также можете взглянуть на другие Схемы хранения матрицы, и если ваша матрица скудна, Сжатое хранение строк (CRS).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с datascience.stackexchange
scroll top