1. 程式人生 > 程式設計 >Numpy一維線性插值函式的用法

Numpy一維線性插值函式的用法

直接列出函式:

numpy.interp(x,xp,fp,left=None,right=None,period=None)

x - 表示將要計算的插值點x座標

xp - 表示已有的xp陣列

fp - 表示對應於已有的xp陣列的值

left - 表示當x值在xp中最小值左邊時,x對應y的值為left

right - 表示當x值在xp中最大值右邊時,x對應y的值為right

(left和right表示x在xp的域外時,y的取值)

example:

1.

import numpy as np

xp = [1,2,3]
fp = [3,0]

print(np.interp(2.5,fp))

output:1.0

2.

import numpy as np

xp = [1,0]

x = [0,1,1.5,2.72,3.14]

print(np.interp(x,fp))

output:[3. 3. 2.5 0.56 0. ]

3.

import numpy as np

xp = [1,-99,99))

output:[-99. 3. 2.5 0.56 99. ]

補充知識:numpy 的一維插值函式interp

numpy.interp(x,period=None)

返回離散資料的一維分段線性插值結果,浮點數或複數(對應於fp值)或ndarray. 插入資料的縱座標,和x形狀相同。

x: 陣列,待插入資料的橫座標.

xp: 一維浮點數序列,原始資料點的橫座標,如果period引數沒有指定那麼就必須是遞增的。否則,在使用xp = xp % period正則化之後,xp在內部進行排序.

fp: 一維浮點數或複數序列原始資料點的縱座標,和xp序列等長.

left: 可選引數,型別為浮點數或複數(對應於fp值),當x < xp[0]時的插值返回值,預設為fp[0].

right: 可選引數,型別為浮點數或複數(對應於fp值),當x > xp[-1]時的插值返回值,預設為fp[-1].

period: None或者浮點數,可選引數. 橫座標的週期. 此引數使得可以正確插入angular x-coordinates. 如果該引數被設定,那麼忽略left引數和right引數。

插入橫座標在原函式橫座標範圍內

x = 2.5     # 要插入值的橫座標
xp = [1,3]   # 要插入序列的橫座標
fp = [3,0]   # 要插入序列的縱座標
y = np.interp(x,fp) # 返回插入值的縱座標 1.0
plt.plot(xp,'-o')
plt.plot(x,y,'x')
plt.show()

插入橫座標在原函式橫座標外(預設)

x = [0,3.14] # 左側外部預設為原函式最左側函式值,右側預設為右側
xp = [1,0]
y = np.interp(x,fp) # array([ 3.,3.,2.5,0.56,0. ])
plt.plot(xp,'x')
plt.show()

插入橫座標在原函式橫座標外(指定)

x = 3.14
xp = [1,0]
UNDEF = -99.0
y = np.interp(x,right=UNDEF) # -99.0
plt.plot(xp,'x')
plt.show()

正弦插值

x = np.linspace(0,2 * np.pi,10) # 在0到2pi的範圍內均勻取10個點
y = np.sin(x)      # sin函式x橫座標對應的y值
xvals = np.linspace(0,50) # 均勻取50個
yinterp = np.interp(xvals,x,y) # 在對映關係為y的x中插入xvals
plt.plot(x,'o')
plt.plot(xvals,yinterp,'-x')
plt.show()

以上這篇Numpy一維線性插值函式的用法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。