Предполагая a
является массив np.int8
типа, вы можете использовать tobytes()
, чтобы получить выход вы указать:
>>> a.tobytes()
b'\x01\n\x10\xff'
Обратите внимание, что мой терминал печатает \x0A
как символ новой строки \n
.
Вызов Python встроенный в функции bytes
на массиве a
делает то же самое, хотя tobytes()
позволяет указать расположение памяти (согласно документации).
Если a
имеет тип, который использует больше байтов для каждого номера, ваша строка байтов может быть дополнена множеством ненужных нулевых байтов. Вы можете наложить на меньший тип или использовать нарезку (или аналогичную). Например, если a
имеет типа int64
:
>>> a.tobytes()[::8]
b'\x01\n\x10\xff
В качестве побочной точки, можно также интерпретировать основную память массива NumPy как байты с использованием view
. Например, если a
еще из int64
типа:
>>> a.view('S8')
array([[b'\x01', b'\n'],
[b'\x10', b'\xff']], dtype='|S8')
Просто для кого-то, видя, что в будущем: «tobyte()» также может быть «ToString()» в некоторых Numpy выпусках, кроме того, «байт (а) «не работает для меня. – Dschoni