2015-10-14 1435 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

相关问题