我有一个表示测量曲线的(numpy)数组。我正在寻找第一个索引i,在此之后连续的
应返回
N
个元素满足某些条件,例如,位于特定范围内。用伪代码描述,我正在寻找最小的i,使得:lower_bound < measurement[i:i+N] < higher_bound
对于范围内的所有元素都满足。
当然,我可以执行以下操作:
for i in xrange(len(measurement) - N):
test_vals = measurement[i:i + N]
if all([True if lower_bound < x < higher_bound else False for x in test_vals]):
return i
对于每个 i
,我总是要比较 N
个值,这是非常低效的。有没有一种最符合Python风格的方法来实现这个?Numpy是否有一些内置功能来解决这个问题?
编辑: 根据请求,我提供一些示例输入数据
a = [1,2,3,4,5,5,6,7,8,5,4,5]
lower_bound = 3.5
upper_bound = 5.5
N = 3
应返回
3
,因为从a [3]
开始,至少有3个值处于边界内。