You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用scipy.find_peaks检测持续多个时间步的特定峰值?

解决find_peaks无法检测持续多步尖峰的方案

原代码中threshold=15是基于相邻点的差值筛选尖峰,而持续多步的平台型尖峰相邻点差值极小,达不到阈值要求,因此无法被识别。可以通过以下参数调整解决:

  • 使用prominence参数(推荐)
    突出度(prominence)衡量的是峰值相对于周围最近谷底的高度差,不受相邻点差值的限制,适合检测这类有显著高低差的平台型尖峰:

    from scipy.signal import find_peaks
    x = [50.7, 50.6, 50.6, 7.6, 12.0, 50.6, 50.4, 50.4, 50.4, 50.4, 50.3, 50.3, 50.2, 50.2, 50.2, 50.2]
    peaks, properties = find_peaks(x, prominence=15)
    

    设置prominence=15后,所有相对于周围谷底高度差超过15的平台区域都会被检测到,返回的peaks包含平台的特征点(如平台的起始最高点),properties中还会附带plateau_sizes等平台相关信息。

  • 使用plateau_size参数(Scipy 1.7.0+)
    如果你使用的是Scipy 1.7.0及以上版本,可直接通过plateau_size指定平台型尖峰的最小持续步数:

    peaks, properties = find_peaks(x, plateau_size=2)
    

    这里plateau_size=2表示仅识别持续至少2个时间步的平台型尖峰,能精准匹配你需要检测的持续型高值区域。

  • 结合width参数
    width参数用于指定峰值的最小宽度(以时间步为单位),同样能筛选出持续多步的尖峰:

    peaks, properties = find_peaks(x, width=2)
    

    设置width=2后,只有宽度≥2的峰值会被检测到,适合识别平台类的持续尖峰。

测试你的数据时,以上方法均可有效检测到前端的50.7/50.6平台,以及后端的50.6/50.4/50.3/50.2系列平台,解决原代码仅能检测单步尖峰的问题。

内容的提问来源于stack exchange,提问作者hoshijun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 10:07:29