Numpy的`logical_or`为两个以上的参数
 Numpy的logical_or函数不超过两个数组进行比较。 我怎样才能find超过两个数组的联合?  (关于Numpy的logical_and和获得两个以上数组的交集,可能会问同样的问题。) 
 如果你问的是numpy.logical_or ,那么不可以,正如文档明确说的那样,唯一的参数是x1, x2 ,也可以是out : 
numpy.logical_or(x1, x2[, out])=<ufunc 'logical_or'>
 你当然可以像这样链接多个logical_or call: 
 >>> x = np.array([True, True, False, False]) >>> y = np.array([True, False, True, False]) >>> z = np.array([False, False, False, False]) >>> np.logical_or(np.logical_or(x, y), z) array([ True, True, True, False], dtype=bool) 
 在NumPy中推广这种链接的方法是reduce : 
 >>> np.logical_or.reduce((x, y, z)) array([ True, True, True, False], dtype=bool) 
当然,如果你有一个multidimensional array而不是单独的数组,那么这也将起作用 – 事实上,这就是它的意图 :
 >>> xyz = np.array((x, y, z)) >>> xyz array([[ True, True, False, False], [ True, False, True, False], [False, False, False, False]], dtype=bool) >>> np.logical_or.reduce(xyz) array([ True, True, True, False], dtype=bool) 
但是三个等长一维数组的元组在NumPy术语中是一个array_like ,可以用作二维数组。
 在NumPy之外,你也可以使用Python的reduce : 
 >>> functools.reduce(np.logical_or, (x, y, z)) array([ True, True, True, False], dtype=bool) 
 但是,与NumPy的reduce不同,Python不是经常需要的。 对于大多数情况,有一种更简单的方法来做事情,例如,将多个Python or操作符链接在一起,不要reduce operator.or_ ,只要使用any operator.or_ 。 而当不存在时,通常使用显式循环更具可读性。 
 事实上,NumPy的any都可以用于这种情况,尽pipe它不是很平常; 如果你没有明确地给它一个轴,你将会得到一个标量而不是一个数组。 所以: 
 >>> np.any((x, y, z), axis=0) array([ True, True, True, False], dtype=bool) 
 正如你所期待的, logical_and是相似的 – 你可以链接它, np.reduce , functools.reduce ,或者用明确的axisreplaceall的。 
 其他操作呢,比如logical_xor ? 再次,同样的交易…除了在这种情况下没有适用的all / anytypes的函数。  (你会怎么称呼它? odd ?) 
由于布尔代数根据定义是可交换和关联的,所以下面的语句或等价的布尔值a,b和c。
 a or b or c 
 (a or b) or c 
 a or (b or c) 
 (b or a) or c 
所以,如果你有一个“逻辑_或”是二元的,你需要传递三个参数(a,b和c),你可以调用
 logical_or(logical_or(a, b), c) 
 logical_or(a, logical_or(b, c)) 
 logical_or(c, logical_or(b, a)) 
或者你喜欢的任何排列方式。
 回到python,如果你想testing一个条件(由一个接受一个被test者并返回一个布尔值的函数test产生)是否适用于a或b或者c或者列表L的任何元素,你通常使用 
 any(test(x) for x in L) 
 如果有人仍然需要这个 – 假设你有三个布尔数组a , b , c具有相同的形状,这给出and元素明智的: 
 a * b * c 
 这给出or : 
 a + b + c 
 这是你想要的吗? 堆叠大量的logical_and或者logical_or是不实际的。 
使用求和函数:
 a = np.array([True, False, True]) b = array([ False, False, True]) c = np.vstack([a,b,b]) Out[172]: array([[ True, False, True], [False, False, True], [False, False, True]], dtype=bool) np.sum(c,axis=0)>0 Out[173]: array([ True, False, True], dtype=bool) 
基于n维情况的abarnert的答案:
  TL; DR: np.logical_or.reduce(np.array(list))