Добавить цифровую матрицу в двоичный файл без цифрового заголовка - PullRequest
0 голосов
/ 28 июня 2018

Я постоянно получаю новые данные в виде пустых матриц, которые мне нужно добавить в существующий файл. Структура и тип данных этого файла фиксированы, поэтому мне нужен python, чтобы выполнить преобразование для меня.

Для одной матрицы это работает:

myArr = np.reshape(np.arange(15), (3,5))
myArr.tofile('bin_file.dat')

Но если я захочу добавить существующий файл все большим количеством массивов, тогда numpy.tofile перезапишет любой контент, найденный в файле, вместо добавления.

Я обнаружил, что могу продолжать делать это:

bfile = open('bin_file.dat', 'ab')
np.save(bfile, myArr)
bfile.close()

, который успешно добавляется в двоичный файл. Но numpy.save, с другой стороны, не хранит необработанные двоичные данные, но также сохраняет заголовок (я полагаю), что делает файл нечитаемым для стороннего программного обеспечения (мне нужен необработанный двоичный файл с float32).

Чтение в существующем содержимом файла с помощью numpy.fromfile, добавление моих данных и повторное сохранение - не вариант, так как файл становится очень большим, и все операции ввода-вывода будут выполняться вечно.

Есть ли что-нибудь похожее на append режим для numpy.tofile? Есть ли другие возможности, которые я в настоящее время упускаю?

1 Ответ

0 голосов
/ 28 июня 2018

Возможно добавить в файл tofile:

In [344]: with open('test1',mode='ba+') as f:
     ...:     np.arange(3).tofile(f)
     ...:     np.arange(5).tofile(f)
     ...:     
In [345]: np.fromfile('test1',dtype=int)
Out[345]: array([0, 1, 2, 0, 1, 2, 3, 4])

Сохраняет данные массива без информации о форме и типе. Таким образом, нагрузка должна указывать dtype. И любое преобразование зависит от вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...