我想知道是否有一种语法上简单的方法来检查numpy数组中的每个元素是否位于两个数字之间。
换句话说,就像numpy.array([1,2,3,4,5]) < 5
将返回array([True, True, True, True, False])
一样,我想知道是否有可能做类似于下面这样的事情:
......以获得......
array([False, True, True, True, False])
我知道我可以通过布尔测试的逻辑链接来获得这个,但是我正在处理一些相当复杂的代码,我正在寻找一个语法上干净的解决方案。
有什么建议吗?
5条答案
按热度按时间2wnc66cl1#
一种解决办法是:
inb24sb22#
另一种方法是使用
numpy.any
,下面是一个示例vulvrdjw3#
也可以将矩阵居中并使用到0的距离
需要记住的一点是,比较在两端是对称的,因此它可以执行
1<x<5
或1<=x<=5
,但不能执行1<=x<5
00jrzges4#
在多维数组中,可以使用建议的
np.any()
选项或比较运算符,而使用&
和and
将引发错误。使用比较运算符的示例(在多维数组上)
现在,如果你想检查数组值是否在一个范围内,例如A〈arr〈B,使用
==
;如果你想检查数组值是否在一个范围外,例如arr〈A and arr〉B,使用!=
:yqhsw0fo5#
将基于NumPy的方法与Numba加速的循环进行比较是很有趣的:
基准的计算和绘制:
x一个一个一个一个x一个一个二个x
导致:
表明(在我的测试条件下):