首页 > 解决方案 > 在数组的所有元素中应用布尔运算符

问题描述

有没有一种实用的方法可以在不使用循环的情况下将相同的布尔运算符(比如or)应用于数组的所有元素?for

我将通过一个例子来阐明我需要什么:

import numpy as np
a=np.array([[1,0,0],[1,0,0],[0,0,1]])
b=a[0] | a[1] | a[2]
print b

or像我上面所做的那样,将布尔运算符应用于矩阵的所有数组的合成方法是什么?

标签: pythonnumpyboolean

解决方案


执行此操作的通常方法是numpy.any沿轴应用:

numpy.any(a, axis=0)

也就是说,还有一种方法可以更直接地通过操作员执行此操作。NumPy ufunc有一种reduce方法,可用于沿数组的轴或数组的所有元素应用它们。使用numpy.logical_or.reduce,我们可以将其表示为

numpy.logical_or.reduce(a, axis=0)

这并不多,因为您想要调用reduce的大多数 ufunc 已经定义了等效的辅助函数。addsummultiplyprodlogical_andalllogical_oranymaximumamaxminimumamin


推荐阅读