Python 测试numpy数组中的每个元素是否位于两个值之间的简单方法?
我想知道是否有一种语法上简单的方法来检查numpy数组中的每个元素是否位于两个数字之间 换句话说,正如Python 测试numpy数组中的每个元素是否位于两个值之间的简单方法?,python,numpy,Python,Numpy,我想知道是否有一种语法上简单的方法来检查numpy数组中的每个元素是否位于两个数字之间 换句话说,正如numpy.array([1,2,3,4,5])
numpy.array([1,2,3,4,5])<5
将返回array([True,True,True,False])
,我想知道是否可以执行类似的操作:
1
。。。获得
数组([False,True,True,True,False])
我知道我可以通过布尔测试的逻辑链接来实现这一点,但我正在处理一些相当复杂的代码,我正在寻找一个语法上干净的解决方案
有什么建议吗?一个解决方案是:
import numpy as np
a = np.array([1, 2, 3, 4, 5])
(a > 1).all() and (a < 5).all()
# False
将numpy导入为np
a=np.array([1,2,3,4,5])
(a>1.all)和(a<5.all)
#假的
如果需要真值数组,请使用:
(a > 1) & (a < 5)
# array([False, True, True, True, False])
(a>1)和(a<5)
#数组([False,True,True,True,False])
另一种方法是使用numpy。任何,下面是一个示例
import numpy as np
a = np.array([1,2,3,4,5])
np.any((a < 1)|(a > 5 ))
将numpy导入为np
a=np.数组([1,2,3,4,5])
np.任何((a<1)|(a>5))
您也可以将矩阵居中,并将距离设置为0
upper_limit = 5
lower_limit = 1
a = np.array([1,2,3,4,5])
your_mask = np.abs(a- 0.5*(upper_limit+lower_limit))<0.5*(upper_limit-lower_limit)
上限=5
下限=1
a=np.数组([1,2,3,4,5])
您的_mask=np.abs(a-0.5*(上限+下限))在多维数组中,您可以使用np.any()
选项或比较运算符,同时使用&
和和将引发错误
使用比较运算符的示例(在多维阵列上)
现在,如果要检查数组值是否在某个范围内,即a,请使用==
=代码>如果要检查数组值是否超出范围,即arrB:
(arr<1) != (arr>3)
> array([[False, True, False],
[ True, False, True],
[ True, True, True],
[False, False, False]])
(arr>1) == (arr<4)
> array([[False, False, False],
[False, False, False],
[False, False, False],
[ True, True, True]])
(arr3)
>数组([[False,True,False],
[对,错,对],
[真的,真的,真的],
[假,假,假]]
(arr>1)==(arr数组([[False,False,False],
[假,假,假],
[假,假,假],
[对,对,对]]
这只是返回False
并且没有给每个元素一个布尔值。我想这就是你想要的,检查数组中的每个元素是否在两个数字之间……好的,我正在编辑……没有不愉快的感觉=)这一定是我不想尝试的事情。多谢!对于较大的阵列,此方法的效率如何?看起来您正在用python运行测试,这可能会大大降低测试速度。在纯numpy中有没有办法做到这一点。你说的“纯numpy”是什么意思?numpy覆盖所有运算符(
(\uugt\uuuuu
),
(arr<1) != (arr>3)
> array([[False, True, False],
[ True, False, True],
[ True, True, True],
[False, False, False]])
(arr>1) == (arr<4)
> array([[False, False, False],
[False, False, False],
[False, False, False],
[ True, True, True]])