您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了如何使用Numpy一維線性插值函數(shù),內(nèi)容簡(jiǎn)而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會(huì)有收獲的,下面讓小編帶大家一起來看看吧。
直接列出函數(shù):
numpy.interp(x, xp, fp, left=None, right=None, period=None)
x - 表示將要計(jì)算的插值點(diǎn)x坐標(biāo)
xp - 表示已有的xp數(shù)組
fp - 表示對(duì)應(yīng)于已有的xp數(shù)組的值
left - 表示當(dāng)x值在xp中最小值左邊時(shí),x對(duì)應(yīng)y的值為left
right - 表示當(dāng)x值在xp中最大值右邊時(shí),x對(duì)應(yīng)y的值為right
(left和right表示x在xp的域外時(shí),y的取值)
example:
1.
import numpy as np xp = [1, 2, 3] fp = [3, 2, 0] print(np.interp(2.5, xp, fp))
output:1.0
2.
import numpy as np xp = [1, 2, 3] fp = [3, 2, 0] x = [0, 1, 1.5, 2.72, 3.14] print(np.interp(x, xp, fp))
output:[3. 3. 2.5 0.56 0. ]
3.
import numpy as np xp = [1, 2, 3] fp = [3, 2, 0] x = [0, 1, 1.5, 2.72, 3.14] print(np.interp(x, xp, fp, -99, 99))
output:[-99. 3. 2.5 0.56 99. ]
補(bǔ)充知識(shí):numpy 的一維插值函數(shù)interp
numpy.interp(x, xp, fp, left=None, right=None, period=None)
返回離散數(shù)據(jù)的一維分段線性插值結(jié)果,浮點(diǎn)數(shù)或復(fù)數(shù)(對(duì)應(yīng)于fp值)或ndarray. 插入數(shù)據(jù)的縱坐標(biāo),和x形狀相同。
x: 數(shù)組,待插入數(shù)據(jù)的橫坐標(biāo).
xp: 一維浮點(diǎn)數(shù)序列,原始數(shù)據(jù)點(diǎn)的橫坐標(biāo),如果period參數(shù)沒有指定那么就必須是遞增的。否則,在使用xp = xp % period正則化之后,xp在內(nèi)部進(jìn)行排序.
fp: 一維浮點(diǎn)數(shù)或復(fù)數(shù)序列原始數(shù)據(jù)點(diǎn)的縱坐標(biāo),和xp序列等長.
left: 可選參數(shù),類型為浮點(diǎn)數(shù)或復(fù)數(shù)(對(duì)應(yīng)于fp值),當(dāng)x < xp[0]時(shí)的插值返回值,默認(rèn)為fp[0].
right: 可選參數(shù),類型為浮點(diǎn)數(shù)或復(fù)數(shù)(對(duì)應(yīng)于fp值),當(dāng)x > xp[-1]時(shí)的插值返回值,默認(rèn)為fp[-1].
period: None或者浮點(diǎn)數(shù),可選參數(shù). 橫坐標(biāo)的周期. 此參數(shù)使得可以正確插入angular x-coordinates. 如果該參數(shù)被設(shè)定,那么忽略left參數(shù)和right參數(shù)。
插入橫坐標(biāo)在原函數(shù)橫坐標(biāo)范圍內(nèi)
x = 2.5 # 要插入值的橫坐標(biāo) xp = [1, 2, 3] # 要插入序列的橫坐標(biāo) fp = [3, 2, 0] # 要插入序列的縱坐標(biāo) y = np.interp(x, xp, fp) # 返回插入值的縱坐標(biāo) 1.0 plt.plot(xp, fp, '-o') plt.plot(x, y, 'x') plt.show()
插入橫坐標(biāo)在原函數(shù)橫坐標(biāo)外(默認(rèn))
x = [0, 1, 1.5, 2.72, 3.14] # 左側(cè)外部默認(rèn)為原函數(shù)最左側(cè)函數(shù)值,右側(cè)默認(rèn)為右側(cè) xp = [1, 2, 3] fp = [3, 2, 0] y = np.interp(x, xp, fp) # array([ 3. ,3. ,2.5 ,0.56, 0. ]) plt.plot(xp, fp, '-o') plt.plot(x, y, 'x') plt.show()
插入橫坐標(biāo)在原函數(shù)橫坐標(biāo)外(指定)
x = 3.14 xp = [1, 2, 3] fp = [3, 2, 0] UNDEF = -99.0 y = np.interp(x, xp, fp, right=UNDEF) # -99.0 plt.plot(xp, fp, '-o') plt.plot(x, y, 'x') plt.show()
正弦插值
x = np.linspace(0, 2 * np.pi, 10) # 在0到2pi的范圍內(nèi)均勻取10個(gè)點(diǎn) y = np.sin(x) # sin函數(shù)x橫坐標(biāo)對(duì)應(yīng)的y值 xvals = np.linspace(0, 2 * np.pi, 50) # 均勻取50個(gè) yinterp = np.interp(xvals, x, y) # 在映射關(guān)系為y的x中插入xvals plt.plot(x, y, 'o') plt.plot(xvals, yinterp, '-x') plt.show()
以上就是關(guān)于如何使用Numpy一維線性插值函數(shù)的內(nèi)容,如果你們有學(xué)習(xí)到知識(shí)或者技能,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。