我有一个名为a
的numpy数组,我想检查它是否包含一个范围内的项目,由两个值指定。
import numpy as np
a = np.arange(100)
mintrshold=33
maxtreshold=66
我的解决方案:
goodItems = np.zeros_like(a)
goodItems[(a<maxtreshold) & (a>mintrshold)] = 1
if goodItems.any():
print (there s an item within range)
你能建议我一种更有效,更健康的方式吗?
答案 0 :(得分:3)
Numpy数组与pythonic a < x < b
不兼容。但是有这样的功能:
np.logical_and(a > mintrshold, a < maxtreshold)
或
np.logical_and(a > mintrshold, a < maxtreshold).any()
在你的特定情况下。基本上,你应该结合两个逐元素的操作。查找logic funcs了解更多详情
答案 1 :(得分:1)
添加纯Numpy答案,我们也可以使用itertools
import itertools
bool(list(itertools.ifilter(lambda x: 33 <= x <= 66, a)))
对于较小的阵列,这就足够了:
bool(filter(lambda x: 33 <= x <= 66, a))