4

我有三个这样的列表:

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

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

d = np.array([True, True, False, True])

但是,d = np.add(a,b,c)返回:

d = np.array([True, True, False, False])

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

4

4 回答 4

13

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

只需使用普通运算符(也许切换到按位逻辑运算符,因为您正在尝试执行布尔逻辑而不是加法):

d = a | b | c

如果您想要可变数量的输入,您可以使用以下any函数:

d = np.any(inputs, axis=0)
于 2013-08-06T18:17:35.427 回答
6

我个人正在使用该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)
于 2016-11-22T14:12:42.260 回答
4

也有直接的解决方案

a + b + c

导致

array([ True,  True, False,  True], dtype=bool)
于 2015-05-25T15:49:43.533 回答
-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]
>>>
于 2013-08-06T18:20:29.613 回答