首页 > 解决方案 > Numpy 整数数组到没有“0x”的十六进制字符串数组

问题描述

array([(1, 1, 0, 2, 240), (1, 1, 0, 255, 255), (1, 1, 0, 255, 255), ...,
       (1, 1, 0, 255, 255), (1, 1, 0, 255, 255), (1, 1, 0, 255, 60)],
      dtype=[('A','u1'), ('B','u1'), ('C','u1'), ('D','u1'), ('E','u1')])

我有一个如上所示的 numpy 数组,我想将它们打印到 HEX 格式的文件中,如下所示:

1 1 0 02 EF
1 1 0 FF FF
...
1 1 0 FF FF
1 1 0 FF 3C

最左边 3 列的整数值只有 0 和 1,因此它们应该只有 1 个 HEX 字符。最右边的 2 列都应该有 2 个 HEX 字符,即使它们的整数值只需要 1。应该省略“0x”前缀。

直接的方法是使用for循环并格式化字符串,但数据集很大,需要很长时间才能完成。是否有一种快速的 numpy 方法来构建字符串数组,然后将其输出到文件?

标签: stringnumpy

解决方案


好的,我在这方面做了更多的工作,我发现这个解决方案对我有用:

numpy.savetxt("my_file.txt", my_numpy_structured_array, delimiter=" ", fmt="%x %x %x %02x %02x")

推荐阅读