Можно ли сопоставить прерывистые данные на диске с массивом с помощью Python?Python

Программы на Python
Ответить
Anonymous
 Можно ли сопоставить прерывистые данные на диске с массивом с помощью Python?

Сообщение Anonymous »

Я хочу сопоставить большую запись Фортрана (12 ГБ) на жестком диске с массивом numpy. (Сопоставление вместо загрузки для экономии памяти.)

Данные, хранящиеся в записи Фортрана, не являются непрерывными, поскольку они разделены маркерами записи. Структура записи следующая: «маркер, данные, маркер, данные,..., данные, маркер». Длина областей данных и маркеров известна.

Длина данных между маркерами не кратна 4 байтам, иначе я могу сопоставить каждую область данных с массивом.

Первый маркер можно пропустить, установив смещение в memmap. Можно ли пропустить другие маркеры и сопоставить данные с массивом?

Извиняюсь за возможную двусмысленность выражение и спасибо за любое решение или предложение.



Отредактировано 15 мая.

Это неформатированные файлы на Фортране. Данные, хранящиеся в записи, представляют собой массив (1024^3)*3 float32 (12 ГБ).

Схема записей переменной длины размером более 2 гигабайт показана ниже:

Изображение


(Подробнее см. здесь -> раздел [ Типы записей] -> [Записи переменной длины].)

В моем случае, кроме последней, каждая подзапись имеет длину 2147483639 байт и разделена 8 байтами. (как вы видите на рисунке выше, это маркер конца предыдущей подзаписи и маркер начала следующей, всего 8 байт).

Мы видим первая подзапись заканчивается первыми 3 байтами определенного числа с плавающей запятой, а вторая подзапись начинается с оставшегося 1 байта как 2147483639 mod 4 =3.

Подробнее здесь: https://stackoverflow.com/questions/165 ... ith-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»