设A
为1D numpy数组、阈值t
、窗口长度K
。你知道吗
如何找到最小索引j
,例如A[j:j+K] < t
?(即,在宽度为K的整个窗口上,A第一次保持在阈值以下)。你知道吗
我尝试过(未完成的)循环,但它似乎远远不是最佳的,我想也许有一个聪明的“numpy方式”来做到这一点。你知道吗
旁注:我们要测试的事实是,在特定的窗口长度期间,我们是否低于阈值,而不是实际值,有助于避免阈值附近的开/关/开/关/开/关伪影(另请参见Hysteresis:“磁滞有意添加到电子电路中,以防止不必要的快速切换[…]补偿开关中的触点反弹或电信号中的噪声。”)。你知道吗
进近#1
我们可以用
1D convolution
-其思想是在与阈值进行比较之后得到布尔数组,然后使用长度与
window
相同的内核运行1D
卷积,并填充1s
。这是每个滑动窗口的总和。所以,所有和为K
的窗口都是我们要找的窗口。使用flatnonzero
获取有效窗口的起始索引。最后,选择第一个。你知道吗进近#2
与
binary-erosion
-这将运行一个长度与
window
相同的滑动内核,并侵蚀掉所有按顺序没有window
长度True
的窗口,留下有效的窗口。同样,使用flatnonzero
获取索引,最后选择第一个索引。我们需要将argorigin
与二进制代码一起使用,以便选择开始。你知道吗进近#3
这是另一个岛屿发现-
相关问题 更多 >
编程相关推荐