如何解决如何使用NumPy将整数向量转换为二进制表示的矩阵?
假设我有以下数组:
import numpy as np
I = np.array([0,1,2,3,15,16,32,64,128])
我想将数组中的每个项目转换成其二进制表示形式。
所需的输出:
[[0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 1]
[0 0 0 0 0 0 1 0]
[0 0 0 0 0 0 1 1]
[0 0 0 0 1 1 1 1]
[0 0 0 1 0 0 0 0]
[0 0 1 0 0 0 0 0]
[0 1 0 0 0 0 0 0]
[1 0 0 0 0 0 0 0]]
最直接的方法是什么? 谢谢!
解决方法
有很多方法可以完成此操作。
一种实现方式:
# Your array
I = np.array([0,1,2,3,15,16,32,64,128])
B = ((I.reshape(-1,1) & (2**np.arange(8))) != 0).astype(int)
print(B[:,::-1])
您也可以执行以下操作:
I = np.array([0,128],dtype=np.uint8)
print(np.unpackbits(I[:,np.newaxis],axis=1))
我个人会推荐第一种方法! 干杯!
,np.array([[int(d) for d in '{0:08b}'.format(el)] for el in I])
这应该为您提供所需的输出,{0:08b}为您提供由8位数字组成的数字的二进制表示形式,在第二个列表中,将二进制数拆分为数字,然后将结果转换为numpy数组。
,您可以使用bin()函数将整数转换为二进制字符串。
可能的解决方案之一是:
[list(bin(num)[2:].zfill(8)) for num in I ]
在这里,我使用列表推导遍历数组,然后对于数组中的每个数字,我应用bin函数将其转换为二进制字符串。然后,我使用zfill(8)在字符串的开头添加零,以使其长度为8,这是输出格式所要求的。然后将其转换为列表。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。