Python 中的样条插值
Rana Hasnain Khan
2024年2月15日
我们将在 Python 中介绍带有一些插值技术的 SciPy
模块。我们还将通过示例介绍 Python 中的样条插值。
Python 中的 SciPy 插值
当我们使用数据来获得预测时,我们需要在 Python 中进行插值。我们用它来构建给定数据点之间的数据点。
Python 提供了一个内置模块 scipy.interpolate
,可用于实现插值。它由类、样条函数、单变量和多变量插值类组成。
插值的方式有很多种,如下图。
- 样条插值
- RBF 插值
- 一维插值
- 单变量样条插值
在本教程中,我们将详细学习样条插值。
Python 中的样条插值
为了通过数据点绘制平滑曲线,我们使用样条插值。我们计算曲线的样条表示,然后,我们可以计算所需点的样条。
我们可以使用函数 splrep
在二维平面中找到样条表示。如果我们想计算 B 样条或其导数,则使用 scipy.interpolate.splev
,如下所示。
# python
# for B-spline representation of a 1-D curve
scipy.interpolate.splrep(x, y, s=1)
# for B-spline or derivatives
spicy.interpolate.splev(x, tck, der)
现在,让我们通过一个例子来尝试找到样条插值。首先,我们将使用以下命令安装 NumPy
、Matplotlib
和 SciPy
。
pip install numpy
pip install matplotlib
pip install scipy
这些命令将安装所需的模块,一旦我们安装了它们,我们会将它们导入我们的 main.py
文件中,如下所示。
# python
import numpy as np
import matplotlib.pyplot as plt
from scipy import interpolate
我们将定义图表上的点,如下所示。
# python
y = [1, 3, 5, 7, 2, 4, 9, 6]
n = len(y)
x = range(0, n)
我们将使用上述方法创建图形并进行曲线样条插值。
# python
tck = interpolate.splrep(x, y, s=0)
xfit = np.arange(0, n - 1, np.pi / 50)
yfit = interpolate.splev(xfit, tck, der=0)
plt.plot(x, y, "ro")
plt.plot(xfit, yfit, "b")
plt.plot(xfit, yfit)
plt.title("Spline interpolation In Python")
plt.show()
输出:
从上面的示例中可以看出,我们可以使用上述方法轻松创建样条插值。
Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.
LinkedIn