You need to enable JavaScript to run this app. 如何将已计算局部极值的数据集处理为平滑阶梯曲线?
优惠活动
大模型
产品
解决方案
定价
更多

如何将已计算局部极值的数据集处理为平滑阶梯曲线?

实现思路说明

第一步 修正极值预处理逻辑

你之前将极值列空值填充为0的操作会干扰阶梯值的连续填充,首先调整原代码去掉填充0的步骤,保留极值位置为原值、非极值位置为NaN的状态,原参考代码调整后如下:

import numpy as np
from scipy.signal import argrelextrema

n=10
df['min'] = df.iloc[argrelextrema(df.data.values, np.less_equal,
                order=n)[0]]['data']
df['max'] = df.iloc[argrelextrema(df.data.values, np.greater_equal,
                order=n)[0]]['data']
# 删掉原来的fillna(0)操作,保留空值标识非极值位置
df['min_max'] = df['min'].combine_first(df['max']) # 直接合并两列,非极值位置为NaN

第二步 生成有序极值序列

从min_max列中提取所有非空的极值点,连同对应的索引位置按升序排列,得到按顺序排列的有效极值列表:

  • 过滤掉索引重合的重复极值点(同位置同时识别为最大最小值的小概率场景,可按业务规则保留其中一个)

第三步 生成阶梯曲线值

创建新的阶梯值列,按如下规则填充:

  • 第一个有效极值点之前的所有行,统一赋值为第一个极值的值(也可按需替换为序列初始值、初始段均值等)
  • 遍历有序极值列表,相邻两个极值点之间的所有行,统一赋值为前一个极值点的值
  • 最后一个有效极值点之后的所有行,统一赋值为最后一个极值的值

假极值频繁跳变问题处理

可以按需组合使用以下过滤规则,减少噪声导致的无意义跳变:

  • 差值过滤:设置最小波动阈值,相邻两个极值的差值小于阈值时,丢弃后一个极值点,不纳入阶梯序列
  • 间隔过滤:设置最小间隔阈值,相邻两个极值的索引间隔小于阈值时,合并两个极值,仅保留更极端(更大/更小)的那个
  • 极值强度校验:调整argrelextrema的order参数,或者新增校验逻辑,仅保留比前后N个点的差值超过阈值的极值点,过滤假极值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 05:06:04