溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用Numpy一維線性插值函數(shù)

發(fā)布時(shí)間:2020-08-01 11:17:30 來源:億速云 閱讀:389 作者:小豬 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了如何使用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í)或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(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)容。

AI