【发布时间】:2019-02-10 20:28:36
【问题描述】:
设A 为一维numpy 数组,阈值t,窗口长度K。
如何找到最小索引j,使得A[j:j+K] < t?(即A第一次在宽度为K的完整窗口低于阈值 )。
我用循环尝试过(未完成的)事情,但它似乎远非最佳,我想也许有一个聪明的“numpy 方式”来做到这一点。
旁注:我们想要测试我们是否低于阈值在某个窗口长度内而不是实际值,这对于避免开/关/开/关/开/关很有用阈值附近的伪影(另请参阅Hysteresis:“有意将滞后添加到电子电路中,以防止不必要的快速切换 [...] 补偿开关中的触点反弹或电信号中的噪声。” em>)。
【问题讨论】:
-
next(j for j in range(len(A)-K) if all(A[j:j+K] < t), None))? -
@pault 是的,可能就是这样!但如果数组很长,我怀疑为所有
j in range(len(A)-K)评估all(A[j:j+K] < t)可能需要很长时间来计算 -
Divakar 的解决方案要快得多,但
all会短路,您不会检查所有j,因为我们使用的是next
标签: python arrays numpy threshold windowing