Skip to main content
 首页 » 编程设计

python之numpy中的局部线性近似

2025年05月04日12www_RR

我有一些 x 和 y 数据,对于 x 向量中的每个条目,在 y 中都有一个对应的条目 向量。此外,x 数据不是均匀分布的。

我想在 x 样本之间进行插值以获得 x 维度中的均匀间距,并近似相应的 y值(value)。在 numpy 中,interp1d 似乎是一个自然的解决方案,但我的问题有一个警告:x 值不是单调递增的(因为 >x 和 y 是时间的函数)。 interp1d 函数和 interpolate 模块中的其他函数因此在 x 反转方向的那些点上给出奇怪的结果。

我真正想做的是在每组两个相邻的 x 点之间简单地拟合一条直线,然后根据这个非常局部的近似值进行插值。在 numpy 中是否有执行此操作的功能,还是我必须自己装配一些东西?

请您参考如下方法:

您可以对您的 xy 对进行排序,然后使用 interp1d 吗?是这样的吗?

import sort 
xy = zip(x,y) 
new_xy = sorted(xy, key=lambda xy: xy[0]) 
x = new_xy[:,0] 
y = new_xy[:,1] 

现在您的 x 单调递增并且关系得以保留。