Python布尔数组将True的索引值设置为0



假设我有一个数组:

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])

最新更新