【发布时间】:2018-11-27 03:55:01
【问题描述】:
我正在寻找一种有效的方法来检测其他非常嘈杂的数据中的高原。高原总是相对较宽 一个简单的例子来说明这些数据的样子:
test=np.random.uniform(0.9,1,100)
test[10:20]=0
plt.plot(test)
请注意,可以有多个平台(应该全部检测到),可以有不同的值。
我尝试过使用 scipy.signal.argrelextrema,但它似乎并没有达到我想要的效果:
peaks=argrelextrema(test,np.less,order=25)
plt.vlines(peaks,ymin=0, ymax=1)
我不需要确切的高原区间 - 粗略的范围估计就足够了,只要该估计值大于或等于实际的高原范围即可。但是,它应该是相对有效的。
【问题讨论】:
-
高原不止一个吗?高原是否总是归零值?如果它们是零值,您需要的不仅仅是获取零值的索引,例如通过
np.where(test==0)? -
嘿,谢谢你的好问题。是的,可以有不止一个高原,不,高原可以有不同的值。将其添加到问题中。
-
是否存在像this question 那样的中间值(例如 y=0.5),可以可靠地将低值组与高值组区分开来?