假设我有一个数组:
a = np.array([1,2,3,4,5])
然后我有一个布尔数组
b = np.array([False, False, True, True, True])
我希望b中"True"的值使a中的值为0,否则,保留a的值。换句话说,我想要这样的东西:
c = a[b]
但这会删除"False"的任何实例。我希望答案是[1,2,0,0]
您可以使用np.where()
:
>>> np.where(b, 0, a)
array([1, 2, 0, 0, 0])
如果要就地修改a
,则分配给由匹配长度的布尔数组索引的a
只会替换True
:的值
>>> a[b] = 0
>>> a
array([1, 2, 0, 0, 0])
~
反转布尔数组,因此替换值为False
的位置很简单:
>>> a[~b] = 0 # Assume we reinitialized a to the original state
>>> a
array([0, 0, 3, 4, 5])