我有一些 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 单调递增并且关系得以保留。
