Метод tobytes
Метод tobytes преобразует массив NumPy в объект типа bytes.
При этом данные располагаются в памяти подряд в порядке C-стиля (по строкам) независимо от исходного порядка хранения.
Этот метод удобен для записи массива в бинарный файл, передачи по сети или использования с низкоуровневыми API.
Метод не копирует данные, если массив уже является непрерывным участком памяти (C-стиль), в противном случае создается копия.
Синтаксис
arr.tobytes([order])
Необязательный параметр order задает порядок обхода элементов при формировании байтового потока.
Допустимые значения: 'C' (по строкам, по умолчанию), 'F' (по столбцам, Fortran-стиль) и 'A' (порядок, в котором массив хранится в памяти).
Метод возвращает объект bytes, содержащий сырые данные массива.
Пример
Создадим одномерный массив чисел и преобразуем его в байтовый поток:
import numpy as np
arr = np.array([1, 2, 3, 4, 5], dtype=np.int32)
res = arr.tobytes()
print(res)
Результат выполнения кода:
b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00'
Пример
Преобразуем двумерный массив в байтовый поток с разным порядком обхода:
import numpy as np
arr = np.array([[1, 2], [3, 4]], dtype=np.int16)
c_order = arr.tobytes('C')
f_order = arr.tobytes('F')
print('C-order:', c_order)
print('F-order:', f_order)
Результат выполнения кода:
"C-order: b'\x01\x00\x02\x00\x03\x00\x04\x00'"
"F-order: b'\x01\x00\x03\x00\x02\x00\x04\x00'"
Пример
Восстановим массив из байтового потока с помощью функции frombuffer:
import numpy as np
arr = np.array([10, 20, 30, 40], dtype=np.int64)
byte_data = arr.tobytes()
new_arr = np.frombuffer(byte_data, dtype=np.int64)
print(new_arr)
Результат выполнения кода:
[10 20 30 40]