選單
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

SciPy 插值


什麼是插值?

插值是一種在給定點之間生成點的方法。

例如:對於點 1 和 2,我們可以進行插值找到點 1.33 和 1.66。

插值有很多用途,在機器學習中我們經常處理資料集中的缺失資料,插值常用於替換這些值。

這種填充值的方法稱為插補

除了插補,插值還常用於需要平滑資料集中離散點的情況。


如何在 SciPy 中實現?

SciPy 提供了一個名為 scipy.interpolate 的模組,其中包含許多用於處理插值的功能。


一維插值

函式 interp1d() 用於對具有 1 個變數的分佈進行插值。

它接受 xy 點,並返回一個可呼叫函式,該函式可以用新的 x 呼叫,並返回相應的 y

示例

對於給定的 xs 和 ys,對 2.1、2.2... 到 2.9 進行插值

from scipy.interpolate import interp1d
import numpy as np

xs = np.arange(10)
ys = 2*xs + 1

interp_func = interp1d(xs, ys)

newarr = interp_func(np.arange(2.1, 3, 0.1))

print(newarr)

結果

  [5.2  5.4  5.6  5.8  6.   6.2  6.4  6.6  6.8]

自己動手試一試 »

注意: 新的 xs 應該與舊的 xs 在同一範圍內,這意味著我們不能用大於 10 或小於 0 的值呼叫 interp_func()



樣條插值

在一維插值中,點是為單個曲線擬合的,而在樣條插值中,點是為由稱為樣條的多項式定義的分段函式擬合的。

函式 UnivariateSpline() 接受 xsys,並生成一個可呼叫函式,該函式可以用新的 xs 呼叫。

分段函式: 為不同範圍定義不同的函式。

示例

為以下非線性點查詢 2.1、2.2... 2.9 的單變數樣條插值

from scipy.interpolate import UnivariateSpline
import numpy as np

xs = np.arange(10)
ys = xs**2 + np.sin(xs) + 1

interp_func = UnivariateSpline(xs, ys)

newarr = interp_func(np.arange(2.1, 3, 0.1))

print(newarr)

結果

  [5.62826474 6.03987348 6.47131994 6.92265019 7.3939103  7.88514634
   8.39640439 8.92773053 9.47917082]

自己動手試一試 »

徑向基函式插值

徑向基函式是對應於固定參考點的函式。

函式 Rbf() 也接受 xsys 作為引數,並生成一個可呼叫函式,該函式可以用新的 xs 呼叫。

示例

使用 rbf 插值以下 xs 和 ys,並查詢 2.1、2.2 ... 2.9 的值

from scipy.interpolate import Rbf
import numpy as np

xs = np.arange(10)
ys = xs**2 + np.sin(xs) + 1

interp_func = Rbf(xs, ys)

newarr = interp_func(np.arange(2.1, 3, 0.1))

print(newarr)

結果

  [6.25748981  6.62190817  7.00310702  7.40121814  7.8161443   8.24773402
   8.69590519  9.16070828  9.64233874]

自己動手試一試 »


×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援