我正在寻找一种使用 SciPy(或 NumPy)创建时间、值对线性插值的“函子”的方法,但根据 SciPy 教程没有! (有点与尝试理解 scipy 和 numpy 插值相反)
自然的方法是 interp1d 但有一个警告:
Legacy 该类被视为遗留类,将不再接收更新。 [...] 有关 interp1d 的预期替代品的指南,请参阅 1-D 插值。
点击链接后,我会进入一个页面,该页面告诉我:
如果您需要的是线性(又称折线)插值,您可以使用 numpy.interp 例程。
问题是,这些根本不等同。
numpy.interp
要求我事先知道点,并且不返回可用于查找插值的函数。
同时,SciPy 有许多其他插值方法,它们都返回 function (或函数对象),例如
CubicSpline
或 PchipInterpolator
。
构造类似于
PchipInterpolator
返回的函数或对象的简单方法是什么,但对于简单的线性插值,现在 interp1d
已被弃用?
如果需要,只需将
numpy.interp
包装在函数中即可。使用 numpy.interp
重新创建 官方文档中的示例:
import numpy as np
from scipy import interpolate
x = np.arange(0, 10)
y = np.exp(-x/3.0)
f1 = interpolate.interp1d(x, y)
f2 = lambda i: np.interp(i, x, y)
xnew = np.arange(0, 9, 0.1)
np.isclose(f1(xnew), f2(xnew)) # Returns True