在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ Scipy插值
Scipy積分
Scipy優(yōu)化算法
Scipy特殊包
Scipy簇聚
Scipy ODR
Scipy Ndimage
Scipy插值
Scipy CSGraph
Scipy輸入和輸出
Scipy開發(fā)環(huán)境安裝
Scipy簡(jiǎn)介
Scipy常量
Scipy統(tǒng)計(jì)函數(shù)
Scipy Linalg
Scipy空間
Scipy FFTpack
Scipy基本功能
Scipy教程

Scipy插值

在本章中,我們將討論插值,及如何在SciPy中使用它。

插值是什么?

插值是在直線或曲線上的兩點(diǎn)之間找到值的過程。 為了幫助記住它的含義,我們應(yīng)該將“inter”這個(gè)詞的第一部分想象為“輸入”,表示要查看原來數(shù)據(jù)的“內(nèi)部”。 這種插值工具不僅適用于統(tǒng)計(jì)學(xué),而且在科學(xué),商業(yè)或需要預(yù)測(cè)兩個(gè)現(xiàn)有數(shù)據(jù)點(diǎn)內(nèi)的值時(shí)也很有用。

下面創(chuàng)建一些數(shù)據(jù),看看如何使用scipy.interpolate包進(jìn)行插值。

import numpy as np
from scipy import interpolate
import matplotlib.pyplot as plt
x = np.linspace(0, 4, 12)
y = np.cos(x**2/3+4)
print (x,y)

執(zhí)行上面示例代碼,得到以下結(jié)果 -

[ 0.          0.36363636  0.72727273  1.09090909  1.45454545  1.81818182
  2.18181818  2.54545455  2.90909091  3.27272727  3.63636364  4.        ] [-0.65364362 -0.61966189 -0.51077021 -0.31047698 -0.00715476  0.37976236
  0.76715099  0.99239518  0.85886263  0.27994201 -0.52586509 -0.99582185]

現(xiàn)在,有兩個(gè)數(shù)組。 假設(shè)這兩個(gè)數(shù)組作為空間點(diǎn)的兩個(gè)維度,使用下面的程序進(jìn)行繪圖,并看看它們的樣子。

plt.plot(x, y,’o’)
plt.show()

上述程序?qū)⑸梢韵螺敵?-

一維插值

scipy.interpolate中的interp1d類是一種創(chuàng)建基于固定數(shù)據(jù)點(diǎn)的函數(shù)的便捷方法,可以使用線性插值在給定數(shù)據(jù)定義的域內(nèi)的任意位置評(píng)估該函數(shù)。

通過使用上述數(shù)據(jù),創(chuàng)建一個(gè)插值函數(shù)并繪制一個(gè)新的插值圖。

f1 = interp1d(x, y,kind = 'linear')

f2 = interp1d(x, y, kind = 'cubic')

使用interp1d函數(shù),創(chuàng)建了兩個(gè)函數(shù)f1f2。 這些函數(shù)對(duì)于給定的輸入x返回y。 第三種變量類型表示插值技術(shù)的類型。 ‘線性’,’最近’,’零’,’線性’,’二次’,’立方’是一些插值技術(shù)。

現(xiàn)在,創(chuàng)建更多長(zhǎng)度的新輸入以查看插值的明顯區(qū)別。 對(duì)新數(shù)據(jù)使用舊數(shù)據(jù)的相同功能。

xnew = np.linspace(0, 4,30)

plt.plot(x, y, 'o', xnew, f(xnew), '-', xnew, f2(xnew), '--')

plt.legend(['data', 'linear', 'cubic','nearest'], loc = 'best')

plt.show()

上述程序?qū)⑸梢韵螺敵?-

樣條曲線

為了通過數(shù)據(jù)點(diǎn)畫出平滑的曲線,繪圖員曾經(jīng)使用薄的柔性木條,硬橡膠,金屬或塑料稱為機(jī)械樣條。 為了使用機(jī)械花鍵,在設(shè)計(jì)中沿著曲線明確選擇了一些銷釘,然后將花鍵彎曲,以便它們接觸到每個(gè)銷釘。

顯然,在這種結(jié)構(gòu)下,樣條曲線在這些引腳上插入曲線。 它可以用來在其他圖紙中重現(xiàn)曲線。 引腳所在的點(diǎn)稱為結(jié)。 可以通過調(diào)整結(jié)點(diǎn)的位置來改變樣條線所定義的曲線的形狀。

單變量樣條

一維平滑樣條擬合一組給定的數(shù)據(jù)點(diǎn)。 Scipy.interpolate中的UnivariateSpline類是創(chuàng)建基于固定數(shù)據(jù)點(diǎn)類的函數(shù)的便捷方法 - scipy.interpolate.UnivariateSpline(x,y,w = None,bbox = [None,None],k = 3,s = None,ext = 0,check_finite = False)

下面來看看一個(gè)例子。

import matplotlib.pyplot as plt
from scipy.interpolate import UnivariateSpline
x = np.linspace(-3, 3, 50)
y = np.exp(-x**2) + 0.1 * np.random.randn(50)
plt.plot(x, y, 'ro', ms = 5)
plt.show()

使用平滑參數(shù)的默認(rèn)值。效果如下 -

spl = UnivariateSpline(x, y)
xs = np.linspace(-3, 3, 1000)
plt.plot(xs, spl(xs), 'g', lw = 3)
plt.show()

手動(dòng)更改平滑量。效果如下 -

spl.set_smoothing_factor(0.5)
plt.plot(xs, spl(xs), 'b', lw = 3)
plt.show()

效果如下 -


上一篇:Scipy FFTpack下一篇:Scipy積分