python - numpy中的局部线性近似

标签 python numpy interpolation

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

我想在 x 样本之间进行插值以获得 x 维度中的均匀间距,并近似相应的 y值(value)。在 numpy 中,interp1d 似乎是一个自然的解决方案,但我的问题有一个警告:x 值不是单调递增的(因为 >xy 是时间的函数)。 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/

相关文章:

python - 为什么 numpy 的 root 失败?

python - 将元素 append 到 numpy 数组中每个箭头的末尾

python - griddata scipy 插值不起作用(给出 nan)

python - 在多个标签中多次更改图像的最佳方法是什么?

python - 使用 Python freeze.py 出错

Python:创建带前缀的顺序列表的简便方法

python - 扩展二维数组并插入缺失值

python - Pandas DataFrame 括号访问器 [ ] 更喜欢列还是行?

python - 具有可能重复项的 numpy 数组的排名

r - R 中缺失值的线性插值