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

scipy.signal.argrelmin返回空值及索引越界错误问题咨询

scipy.signal.argrelmin使用问题排查方案

问题1:min_idxs为空的原因

  • 核心原因:argrelmin默认仅查找序列内部的局部极小值,要求极小值点必须同时小于左右相邻的两个点,以下两种场景会返回空数组:
    1. 距离序列的最小值出现在序列首尾边界处:此时最小点只有单侧邻居,不符合argrelmin的默认判定规则,不会被识别
    2. 距离序列整体单调:你拟合的是二次多项式曲线,部分点到曲线的距离会随x递增/单调递减,全程没有内部局部极小值,自然返回空
  • 解决方法:你第二段代码中补充的判断逻辑已经可以解决该问题,空的时候手动把全局最小值的索引加入即可:
if not min_idxs.size:
    min_idxs = [np.argmin(dis)]

问题2:IndexError索引越界的原因

  • 核心原因:索引对应数组完全混淆
    • glob_min_idx2是距离数组dis2的索引,dis2和你构造的拟合曲线数组x、y长度一致,你的x是步长0.05从40000到53000的序列,总长度超过26万,所以glob_min_idx2的数值会到几万甚至几十万
    • 但你错误地用这个索引去取长度仅为39的x_data数组的元素,x_data最大合法索引是38,自然会报索引越界错误
  • 解决方法:取拟合曲线上最近点的坐标时,应该用glob_min_idx2去索引x和y数组,而非x_data/y_data:
# 错误写法
min_x2 = x_data[glob_min_idx2]
min_y2 = y_data[glob_min_idx2]

# 正确写法
min_x2 = x[glob_min_idx2]
min_y2 = y[glob_min_idx2]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 17:24:03