Сохранение массива Numpy в двоичный файл и его правильное чтение

#python #numpy

#python #numpy

Вопрос:

Как показано в приведенном ниже фрагменте, я последовательно записываю кучу массивов Numpy с формами (3, 225, 400) в двоичный файл.

 with open("frames", "wb") as f:
    while ...: 
        screen_buffer.tofile(f)
 

И я хотел бы проверить, могу ли я правильно записать эти массивы или нет. Однако у меня возникли проблемы при печати двоичного файла.

 with open("frames", "rb") as f:
    x = np.fromfile(fr, dtype=np.uint8)
    while len(x)>0:
        print(x)
        x = np.fromfile(fr, dtype=np.uint8)
 

Приведенный выше код печатает только одну строку:

 [31 55 55 ... 103 103 103]
 

вместо этого:

один полный буфер

Комментарии:

1. tofile/fromfile Комбинация не сохраняет shape или dtype . save/load Вместо этого используйте пару.

2. Я не могу использовать save / load, потому что «save» записывает один массив в один файл. Учитывая, что мой код создает тысячи массивов в цикле, этот подход приводит меня к созданию тысяч отдельных двоичных файлов.

3. save записывает заголовок плюс данные. tofile просто записывает данные. Ваш выбор. Вы понимаете, как массивы хранятся в памяти? Такие вещи, как shape, dtype и databuffer?