Python 中的樣條插值
Rana Hasnain Khan
2023年1月30日
2022年5月18日
我們將在 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
。
# python
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()
輸出:
從上面的示例中可以看出,我們可以使用上述方法輕鬆建立樣條插值。
Author: Rana Hasnain Khan
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