我想在 python 2.7 中将 numpy 数组转换为字节串。比如说我的 numpy 数组a
是一个简单的2x2
数组,看起来像这样:
[[1,10],
[16,255]]
我的问题是,如何将此数组转换为字节字符串或字节数组,输出如下:
\x01\x0A\x10\xff
或者同样好:
bytearray(b'\x01\x0A\x10\xff')
假设a
是一个数组np.int8
类型,你可以使用tobytes() http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.tobytes.html获取您指定的输出:
>>> a.tobytes()
b'\x01\n\x10\xff'
请注意,我的终端打印\x0A
作为换行符\n
.
调用Python内置函数bytes
在阵列上a
做同样的事情,虽然tobytes()
允许您指定内存布局(根据文档)。
If a
如果类型为每个数字使用更多字节,则您的字节字符串可能会填充大量不需要的空字节。您可以转换为较小的类型,或使用切片(或类似的)。例如如果a
属于类型int64
:
>>> a.tobytes()[::8]
b'\x01\n\x10\xff
顺便说一句,您还可以使用以下命令将 NumPy 数组的底层内存解释为字节:view
。例如,如果a
仍然是int64
type:
>>> a.view('S8')
array([[b'\x01', b'\n'],
[b'\x10', b'\xff']], dtype='|S8')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)