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

NumPy插值返回错误结果的问题求助

NumPy插值返回错误结果的问题求助

看起来你在使用np.interp时踩了两个关键坑,导致结果和预期差得很远,咱们一步步捋清楚问题出在哪,再解决它:

问题1:x和y的对应关系被打乱了

你单独对x数组做了排序,但完全没同步调整y数组,这就把原本一一对应的(x,y)配对数据彻底搞错位了。比如原来x=0.250对应y=54.9,排序后x的顺序变了,但y还是原来的顺序,插值的时候自然找不到正确的对应关系。

问题2:没满足np.interp的参数规则

np.interp的语法是np.interp(目标点, 自变量数组, 因变量数组),而且要求自变量数组必须是单调递增的。你现在想找y=60对应的x值,本质是把y当自变量、x当因变量,但你的y数组是递减的,再加上之前的配对错位,结果肯定不对。


修正后的代码

咱们先把原始的(x,y)数据配对好,按y值从小到大排序(满足自变量单调递增的要求),再进行插值:

import numpy as np

# 原始配对数据,保证x和y一一对应
x = [4.75, 2.00, 0.850, 0.425, 0.250, 0.180, 0.150, 0.075]
y = [100, 94.5, 86.3, 74.1, 54.9, 38.1, 9.3, 1.7]

# 将(x,y)配对后按y值升序排序,确保自变量单调递增
sorted_pairs = sorted(zip(y, x), key=lambda item: item[0])
sorted_y, sorted_x = zip(*sorted_pairs)

# 插值y=60对应的x值
xi = np.interp(60, sorted_y, sorted_x)
print(xi)

运行这段代码后,输出会是0.287左右,和你预期的0.27非常接近——这是因为原始数据里y=54.9对应x=0.250,y=74.1对应x=0.425,线性插值的结果本来就在这个区间里,和你的预期偏差是合理的。

备注:内容来源于stack exchange,提问作者Kama zaki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 13:05:33