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)
还有一个简单的解决方案
a + b + c
Run Code Online (Sandbox Code Playgroud)
导致
array([ True, True, False, True], dtype=bool)
Run Code Online (Sandbox Code Playgroud)
我个人正在使用该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)