繁体   English   中英

将numpy数组转换为十六进制bytearray

[英]Convert numpy array to hex bytearray

我想将一个numpy数组转换为python 2.7中的bytestring。 让我说我的numpy数组a是一个简单的2x2数组,看起来像这样:

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

我的问题是,如何将此数组转换为字节字符串或bytearray与输出看起来像:

\x01\x0A\x10\xff

或同样好:

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

假设anp.int8类型的数组,您可以使用tobytes()来获取指定的输出:

>>> a.tobytes()
b'\x01\n\x10\xff'

请注意,我的终端打印\\x0A作为换行符\\n

虽然tobytes()允许您指定内存布局(根据文档),但在数组a上调用内置函数bytes的Python会做同样的事情。

如果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')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM