Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何有效地检查numpy数组包含给定范围内的项?_Python_Arrays_Numpy - Fatal编程技术网

Python 如何有效地检查numpy数组包含给定范围内的项?

Python 如何有效地检查numpy数组包含给定范围内的项?,python,arrays,numpy,Python,Arrays,Numpy,我有一个numpy数组,名为a,我想检查它是否包含由两个值指定的范围内的项 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

我有一个numpy数组,名为
a
,我想检查它是否包含由两个值指定的范围内的项

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)
goodItems=np.zero\u like(a)
货物项目[(Amitrshold)]=1
如果是goodItems.any():
打印(范围内有项目)

你能给我推荐一种更有效的pythonic方法吗?

Numpy数组不能很好地与pythonic
a
配合使用。但这里有func:

np.logical_and(a > mintrshold, a < maxtreshold)
np.logical_和(a>mintrshold,a

np.logical_和(a>mintrshold,a

在你的特殊情况下。基本上,您应该结合两种元素操作。查看更多详细信息

添加到纯Numpy答案中,我们也可以使用
itertools

import itertools

bool(list(itertools.ifilter(lambda x: 33 <= x <= 66, a)))
导入itertools

bool(list)(itertools.ifilter)(lambda x:33)我不知道numpy本身,但是对于普通的python列表,我会像这样编写它;如果有的话(MintrshholdTrue
。如果你需要返回的布尔值列表/数组,请告诉我,我可以修改你很好地解释了我的问题,但是如果a=np.arange(100120),你的第二行仍然返回true。对我来说,它返回
False
,我想可能是你复制或键入了错误的内容。鉴于
a=np.arange(100120),我的两行代码都返回
False
我用pyton 3.6尝试了第二个oneliner,它返回True,在Python2.5中返回False(a=np.arange(100120)):D。我昨天才用3.6检查过它。
import itertools

bool(list(itertools.ifilter(lambda x: 33 <= x <= 66, a)))
bool(filter(lambda x: 33 <= x <= 66, a))