Skip to main content
 首页 » 编程设计

Python 和 numpy之将数组中的多个值转换为二进制

2025年05月04日9daizhj

我有一个相当大的 numpy 数组,大约 1mill。数字的不同数量约为8个编号1-8。

假设我想要给定数字 2,我想将所有 2 重新编码为 1,将其余的重新编码为 0。

i.e.  
2==>1 
1345678==0 
 
Is there a pythonic way to do this with numpy? 
 
 
[1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8]=> [0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0] 

谢谢

请您参考如下方法:

这是 NumPy 数组 a 的 a == 2 的结果:

>>> a = numpy.random.randint(1, 9, size=20) 
>>> a 
array([4, 5, 1, 2, 5, 7, 2, 5, 8, 2, 4, 6, 6, 1, 8, 7, 1, 7, 8, 7]) 
>>> a == 2 
array([False, False, False,  True, False, False,  True, False, False, 
        True, False, False, False, False, False, False, False, False, 
       False, False], dtype=bool) 
>>> (a == 2).astype(int) 
array([0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) 

如果您想就地更改a,最有效的方法是使用numpy.equal():

>>> numpy.equal(a, 2, out=a) 
array([0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])