我有一些 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 单调递增并且关系得以保留。
关于python - numpy中的局部线性近似,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13257167/