1
我想在Python 2.7中將numpy數組轉換爲一個字節串。比方說我numpy的陣列a
是一個簡單的2x2
陣列,看起來像這樣:將numpy數組轉換爲十六進制字節陣列
[[1,10],
[16,255]]
我的問題是,如何將這個數組轉換爲字節串或與輸出看起來像字節組:
\x01\x0A\x10\xff
或同樣好:
bytearray(b'\x01\x0A\x10\xff')
我想在Python 2.7中將numpy數組轉換爲一個字節串。比方說我numpy的陣列a
是一個簡單的2x2
陣列,看起來像這樣:將numpy數組轉換爲十六進制字節陣列
[[1,10],
[16,255]]
我的問題是,如何將這個數組轉換爲字節串或與輸出看起來像字節組:
\x01\x0A\x10\xff
或同樣好:
bytearray(b'\x01\x0A\x10\xff')
假設a
被np.int8
類型的數組,可以用tobytes()
讓你指定輸出:
>>> a.tobytes()
b'\x01\n\x10\xff'
請注意,我的終端打印\x0A
作爲換行符\n
。
調用內置函數bytes
的Python a
做同樣的事情,雖然tobytes()
允許您指定內存佈局(根據文檔)。
如果a
的類型爲每個數字使用更多字節,那麼您的字節字符串可能會填充大量不需要的空字節。您可以投射到較小的類型,也可以使用切片(或類似)。例如,如果是a
類型int64
的:
>>> a.tobytes()[::8]
b'\x01\n\x10\xff
作爲一個側點,也可以利用解釋的view
陣列NumPy的的基本存儲器中作爲字節。舉例來說,如果a
仍然是int64
類型:
>>> a.view('S8')
array([[b'\x01', b'\n'],
[b'\x10', b'\xff']], dtype='|S8')
就有人看到的是,在未來的:「tobyte()」也可以是「的ToString()」在一些numpy的版本,而且「字節(一) '對我不起作用。 – Dschoni