使用 SciPy/NumPy 替代一维线性插值的函数对象是什么?

问题描述 投票:0回答:1

我正在寻找一种使用 SciPy(或 NumPy)创建时间、值对线性插值的“函子”的方法,但根据 SciPy 教程没有! (有点与尝试理解 scipy 和 numpy 插值相反)

自然的方法是 interp1d 但有一个警告:

Legacy 该类被视为遗留类,将不再接收更新。 [...] 有关 interp1d 的预期替代品的指南,请参阅 1-D 插值

点击链接后,我会进入一个页面,该页面告诉我:

如果您需要的是线性(又称折线)插值,您可以使用 numpy.interp 例程。

问题是,这些根本不等同。

numpy.interp
要求我事先知道点,并且不返回可用于查找插值的函数。

同时,SciPy 有许多其他插值方法,它们都返回 function (或函数对象),例如

CubicSpline
PchipInterpolator

构造类似于

PchipInterpolator
返回的函数或对象的简单方法是什么,但对于简单的线性插值,现在
interp1d
已被弃用?

python numpy scipy linear-interpolation
1个回答
0
投票

如果需要,只需将

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
© www.soinside.com 2019 - 2024. All rights reserved.