String Numpy整数数组到十六进制字符串数组,不带;0x";

String Numpy整数数组到十六进制字符串数组,不带;0x";,string,numpy,String,Numpy,我有一个numpy数组,如上图所示,我想将它们打印到一个十六进制文件中,如下所示: 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'

我有一个numpy数组,如上图所示,我想将它们打印到一个十六进制文件中,如下所示:

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')])
最左边3列的整数值只有0和1,因此它们应该只有1个十六进制字符。最右边的2列都应该有2个十六进制字符,即使它们的整数值只需要1。应省略“0x”前缀


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

好的,我在这方面做了更多的工作,找到了适合我的解决方案:

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

如果您的数据存储为二维数组而不是结构化数组,那么就更容易做到这一点,因为您没有混合数据类型,为什么要使用结构化数组?数据是从二进制文件读入结构化数组的。二进制文件中的数据字段具有不同的长度。如何将二进制文件中的数据读入2D数组而不是结构化数组?
numpy.savetxt("my_file.txt", my_numpy_structured_array, delimiter=" ", fmt="%x %x %x %02x %02x")