Python 中的样条插值

Rana Hasnain Khan 2024年2月15日
  1. Python 中的 SciPy 插值
  2. Python 中的样条插值
Python 中的样条插值

我们将在 Python 中介绍带有一些插值技术的 SciPy 模块。我们还将通过示例介绍 Python 中的样条插值。

Python 中的 SciPy 插值

当我们使用数据来获得预测时,我们需要在 Python 中进行插值。我们用它来构建给定数据点之间的数据点。

Python 提供了一个内置模块 scipy.interpolate,可用于实现插值。它由类、样条函数、单变量和多变量插值类组成。

插值的方式有很多种,如下图。

  1. 样条插值
  2. RBF 插值
  3. 一维插值
  4. 单变量样条插值

在本教程中,我们将详细学习样条插值。

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)

现在,让我们通过一个例子来尝试找到样条插值。首先,我们将使用以下命令安装 NumPyMatplotlibSciPy

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()

输出:

python 中的样条插值

从上面的示例中可以看出,我们可以使用上述方法轻松创建样条插值。

Rana Hasnain Khan avatar Rana Hasnain Khan avatar

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

相关文章 - Python Interpolation