python - 在数组的所有元素中应用布尔运算符
问题描述
有没有一种实用的方法可以在不使用循环的情况下将相同的布尔运算符(比如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
像我上面所做的那样,将布尔运算符应用于矩阵的所有数组的合成方法是什么?
解决方案
执行此操作的通常方法是numpy.any
沿轴应用:
numpy.any(a, axis=0)
也就是说,还有一种方法可以更直接地通过操作员执行此操作。NumPy ufunc有一种reduce
方法,可用于沿数组的轴或数组的所有元素应用它们。使用numpy.logical_or.reduce
,我们可以将其表示为
numpy.logical_or.reduce(a, axis=0)
这并不多,因为您想要调用reduce
的大多数 ufunc 已经定义了等效的辅助函数。add
有sum
,multiply
有prod
,logical_and
有all
,logical_or
有any
,maximum
有amax
,minimum
有amin
。
推荐阅读
- asp.net-core - 是否可以通过 Linux 上的 Azure 应用服务强制从 ASP.NET Core 返回 Connection 标头
- c++ - (C++) 为什么会出现堆栈溢出?
- json - 如何在 curl 中使用“where”子句?
- hbase - OpenTSDB:仍然使用随机 uid 进行热点处理?
- javascript - 如何使用 JavaScript 查找所有具有事件侦听器的元素?
- angular - 在 Angular 应用程序中使用模块中的代码的 Web 工作者
- python - 如何返回最大尺寸的图像
- bash - bash 输出到文件冻结
- android - MotionLayout 动画不流畅
- android - 将图像从 ImageView 存储到内部存储