Python numpy中的局部线性逼近

Python numpy中的局部线性逼近,python,numpy,interpolation,Python,Numpy,Interpolation,我有一些x和y数据,其中对于x向量中的每个条目,在y向量中都有相应的条目。此外,x数据的间隔不是均匀的 我想在x样本之间进行插值,以获得x维度中的均匀间距,并近似对应的y值。在numpy中,interp1d似乎是一个自然的解决方案,但我的问题有一个警告:x值不是单调递增的(因为x和y都是时间的函数)。interp1d函数和插值模块中的其他函数,因此在x反转方向的点上会产生奇怪的结果 我真正想做的是在每组相邻的x点之间拟合一条直线,然后基于这个局部近似进行插值。在numpy中有这样做的功能吗?或者

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

我想在
x
样本之间进行插值,以获得
x
维度中的均匀间距,并近似对应的
y
值。在numpy中,
interp1d
似乎是一个自然的解决方案,但我的问题有一个警告:
x
值不是单调递增的(因为
x
y
都是时间的函数)。
interp1d
函数和插值模块中的其他函数,因此在
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在单调地增加,并且关系已经保留。

你应该记住将有用的答案标记为“已接受”;这有助于其他人在查看您的问题时找到最有用的答案,也有助于识别那些您花时间帮助您解决问题的人。如果
x
没有单调增加或减少,则您没有唯一的映射。例如,如果您有
x=array([0,1,0])
,如果您通过
xx=0.5
,应该插入哪两个点?我知道没有唯一的映射。但是,假设x=array([0,1,0]),如果我把插值输入设为xx=array([0,0.5,1,0.5,0]),那么我想得到的第一个0.5值是前两个y之间的中点,第二个0.5值是后两个y之间的中点,如果这个解释有意义的话。你有权访问时间变量吗?如果是这样的话,你可以使用多元回归来预测基于x和t的y。多元回归听起来很合理,但我需要弄清楚y作为x的函数变化的速度有多快,这基本上减少了我自己的操作。