如何使用 SciPy 庫實現“三次”1-D 插值?


要使用 SciPy 實現“三次”1-D 插值,我們需要在 scipy.interpolate.interp1d 類的“kind”引數中將插值型別指定為“三次”。讓我們看以下示例來理解它 -

示例

首先我們生成一些資料,然後對其進行插值 -

import numpy as np
from scipy.interpolate import interp1d
import matplotlib.pyplot as plt
A = np.linspace(0, 10, num=11, endpoint=True)
B = np.cos(-A**2/9.0)
print (A, B)

輸出

以上指令碼將生成 0 到 4 之間的以下點 -

[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.] [ 1. 0.99383351 0.90284967 0.54030231 -0.20550672 -0.93454613 -0.65364362 0.6683999 0.67640492 -0.91113026 0.11527995]

現在,讓我們按如下方式繪製這些點-

plt.plot(A, B, '.')
plt.show()

現在,我們需要基於固定資料點建立一個插值函式。讓我們建立它 -

function_interpolate = interp1d(A, B, kind = 'cubic') #providing ‘cubic’ in the parameter ‘kind’.

為了清楚地看到插值的差異,我們將使用與舊輸入相同的函式建立一個新輸入,其長度更大 -

Anew = np.linspace(0, 10, num=30, endpoint=True)
plt.plot(A, B, '.', Anew, function_interpolate(Anew), '--')
plt.legend(['data', 'cubic'], loc = 'best')
plt.show()

更新於: 2021-11-24

151 檢視

開啟您的職業生涯

透過完成本課程獲得認證

開始學習
廣告
© . All rights reserved.