Python:添加布尔Numpy数组

Joe*_*lip 3 python boolean numpy

我有三个列表:

a = np.array([True, True, False, False])
b = np.array([False, False, False, False])
c = np.array([False, False, False, True])
Run Code Online (Sandbox Code Playgroud)

我想添加数组,以便新数组只有False所有相应的元素都有False.例如,输出应为:

d = np.array([True, True, False, True])
Run Code Online (Sandbox Code Playgroud)

但是,d = np.add(a,b,c)退货:

d = np.array([True, True, False, False])
Run Code Online (Sandbox Code Playgroud)

为什么这样,我该如何解决?谢谢!

use*_*ica 11

np.add第三个参数是一个可输出的可选数组.该函数只能添加两个数组.

只需使用普通的运算符(也许可以切换到按位逻辑运算符,因为你试图做布尔逻辑而不是加法):

d = a | b | c
Run Code Online (Sandbox Code Playgroud)

如果需要可变数量的输入,可以使用以下any功能:

d = np.any(inputs, axis=0)
Run Code Online (Sandbox Code Playgroud)


cfh*_*cfh 5

还有一个简单的解决方案

a + b + c
Run Code Online (Sandbox Code Playgroud)

导致

array([ True,  True, False,  True], dtype=bool)
Run Code Online (Sandbox Code Playgroud)


Mar*_*Mag 5

我个人正在使用该np.logical_and功能。

对于提出的问题:

In [3]: a = np.array([True, True, False, False])
   ...: b = np.array([False, False, False, False])
   ...: c = np.array([False, False, False, True])

In [4]: np.logical_and(a,b,c)
Out[4]: array([False, False, False, False], dtype=bool)
Run Code Online (Sandbox Code Playgroud)


v2b*_*v2b -4

>>> a=[True, True, False, False]
>>> b=[False, False, False, False]
>>> c=[False, False, False, True]
>>> map(sum, zip(a,b,c))
[1, 1, 0, 1]
>>>
Run Code Online (Sandbox Code Playgroud)

  • @JoeFlip:这是使用列表而不是 numpy 数组。性能将会下降,广播语义将会消失,并且切片将无法正常工作。`np.any` 是一个更好的选择。 (2认同)