2015-10-14 1431 views
1

我想在Python 2.7中將numpy數組轉換爲一個字節串。比方說我numpy的陣列a是一個簡單的2x2陣列,看起來像這樣:將numpy數組轉換爲十六進制字節陣列

[[1,10], 
[16,255]] 

我的問題是,如何將這個數組轉換爲字節串或與輸出看起來像字節組:

\x01\x0A\x10\xff 

或同樣好:

bytearray(b'\x01\x0A\x10\xff') 

回答

3

假設anp.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') 
+0

就有人看到的是,在未來的:「tobyte()」也可以是「的ToString()」在一些numpy的版本,而且「字節(一) '對我不起作用。 – Dschoni

相關問題