最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 一維二維插值實(shí)例

 更新時間:2020年04月22日 09:50:19   作者:zhyj3038  
這篇文章主要介紹了python 一維二維插值實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

一維插值

插值不同于擬合。插值函數(shù)經(jīng)過樣本點(diǎn),擬合函數(shù)一般基于最小二乘法盡量靠近所有樣本點(diǎn)穿過。常見插值方法有拉格朗日插值法、分段插值法、樣條插值法。

拉格朗日插值多項(xiàng)式:當(dāng)節(jié)點(diǎn)數(shù)n較大時,拉格朗日插值多項(xiàng)式的次數(shù)較高,可能出現(xiàn)不一致的收斂情況,而且計(jì)算復(fù)雜。隨著樣點(diǎn)增加,高次插值會帶來誤差的震動現(xiàn)象稱為龍格現(xiàn)象。

分段插值:雖然收斂,但光滑性較差。

樣條插值:樣條插值是使用一種名為樣條的特殊分段多項(xiàng)式進(jìn)行插值的形式。由于樣條插值可以使用低階多項(xiàng)式樣條實(shí)現(xiàn)較小的插值誤差,這樣就避免了使用高階多項(xiàng)式所出現(xiàn)的龍格現(xiàn)象,所以樣條插值得到了流行。

在CODE上查看代碼片派生到我的代碼片

#!/usr/bin/env python 
# -*-coding:utf-8 -*- 
import numpy as np 
from scipy import interpolate 
import pylab as pl 
 
x=np.linspace(0,10,11) 
#x=[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.] 
y=np.sin(x) 
xnew=np.linspace(0,10,101) 
pl.plot(x,y,"ro") 
 
for kind in ["nearest","zero","slinear","quadratic","cubic"]:#插值方式 
 #"nearest","zero"為階梯插值 
 #slinear 線性插值 
 #"quadratic","cubic" 為2階、3階B樣條曲線插值 
 f=interpolate.interp1d(x,y,kind=kind) 
 # ‘slinear', ‘quadratic' and ‘cubic' refer to a spline interpolation of first, second or third order) 
 ynew=f(xnew) 
 pl.plot(xnew,ynew,label=str(kind)) 
pl.legend(loc="lower right") 
pl.show() 

結(jié)果:

二維插值

方法與一維數(shù)據(jù)插值類似,為二維樣條插值。

在CODE上查看代碼片派生到我的代碼片

# -*- coding: utf-8 -*- 
""" 
演示二維插值。 
""" 
import numpy as np 
from scipy import interpolate 
import pylab as pl 
import matplotlib as mpl 
 
def func(x, y): 
 return (x+y)*np.exp(-5.0*(x**2 + y**2)) 
 
# X-Y軸分為15*15的網(wǎng)格 
y,x= np.mgrid[-1:1:15j, -1:1:15j] 
 
fvals = func(x,y) # 計(jì)算每個網(wǎng)格點(diǎn)上的函數(shù)值 15*15的值 
print len(fvals[0]) 
 
#三次樣條二維插值 
newfunc = interpolate.interp2d(x, y, fvals, kind='cubic') 
 
# 計(jì)算100*100的網(wǎng)格上的插值 
xnew = np.linspace(-1,1,100)#x 
ynew = np.linspace(-1,1,100)#y 
fnew = newfunc(xnew, ynew)#僅僅是y值 100*100的值 
 
# 繪圖 
# 為了更明顯地比較插值前后的區(qū)別,使用關(guān)鍵字參數(shù)interpolation='nearest' 
# 關(guān)閉imshow()內(nèi)置的插值運(yùn)算。 
pl.subplot(121) 
im1=pl.imshow(fvals, extent=[-1,1,-1,1], cmap=mpl.cm.hot, interpolation='nearest', origin="lower")#pl.cm.jet 
#extent=[-1,1,-1,1]為x,y范圍 favals為 
pl.colorbar(im1) 
 
pl.subplot(122) 
im2=pl.imshow(fnew, extent=[-1,1,-1,1], cmap=mpl.cm.hot, interpolation='nearest', origin="lower") 
pl.colorbar(im2) 
 
pl.show() 

左圖為原始數(shù)據(jù),右圖為二維插值結(jié)果圖。

二維插值的三維展示方法

在CODE上查看代碼片派生到我的代碼片

# -*- coding: utf-8 -*- 
""" 
演示二維插值。 
""" 
# -*- coding: utf-8 -*- 
import numpy as np 
from mpl_toolkits.mplot3d import Axes3D 
import matplotlib as mpl 
from scipy import interpolate 
import matplotlib.cm as cm 
import matplotlib.pyplot as plt 
 
def func(x, y): 
 return (x+y)*np.exp(-5.0*(x**2 + y**2)) 
 
# X-Y軸分為20*20的網(wǎng)格 
x = np.linspace(-1, 1, 20) 
y = np.linspace(-1,1,20) 
x, y = np.meshgrid(x, y)#20*20的網(wǎng)格數(shù)據(jù) 
 
fvals = func(x,y) # 計(jì)算每個網(wǎng)格點(diǎn)上的函數(shù)值 15*15的值 
 
fig = plt.figure(figsize=(9, 6)) 
#Draw sub-graph1 
ax=plt.subplot(1, 2, 1,projection = '3d') 
surf = ax.plot_surface(x, y, fvals, rstride=2, cstride=2, cmap=cm.coolwarm,linewidth=0.5, antialiased=True) 
ax.set_xlabel('x') 
ax.set_ylabel('y') 
ax.set_zlabel('f(x, y)') 
plt.colorbar(surf, shrink=0.5, aspect=5)#標(biāo)注 
 
#二維插值 
newfunc = interpolate.interp2d(x, y, fvals, kind='cubic')#newfunc為一個函數(shù) 
 
# 計(jì)算100*100的網(wǎng)格上的插值 
xnew = np.linspace(-1,1,100)#x 
ynew = np.linspace(-1,1,100)#y 
fnew = newfunc(xnew, ynew)#僅僅是y值 100*100的值 np.shape(fnew) is 100*100 
xnew, ynew = np.meshgrid(xnew, ynew) 
ax2=plt.subplot(1, 2, 2,projection = '3d') 
surf2 = ax2.plot_surface(xnew, ynew, fnew, rstride=2, cstride=2, cmap=cm.coolwarm,linewidth=0.5, antialiased=True) 
ax2.set_xlabel('xnew') 
ax2.set_ylabel('ynew') 
ax2.set_zlabel('fnew(x, y)') 
plt.colorbar(surf2, shrink=0.5, aspect=5)#標(biāo)注 
 
plt.show() 

左圖的二維數(shù)據(jù)集的函數(shù)值由于樣本較少,會顯得粗糙。而右圖對二維樣本數(shù)據(jù)進(jìn)行三次樣條插值,擬合得到更多數(shù)據(jù)點(diǎn)的樣本值,繪圖后圖像明顯光滑多了。

補(bǔ)充知識:python中對Dataframe二維查表插值的實(shí)現(xiàn)方法

今天在計(jì)算風(fēng)力發(fā)電機(jī)捕捉風(fēng)能功率的時候,需要對葉片掃略面積內(nèi)的風(fēng)能做個功率效率折減,即Cp系數(shù),Cp的定義如下,即實(shí)際利用的風(fēng)能與輸入風(fēng)能的比例

輸入風(fēng)能是空氣密度與風(fēng)速的函數(shù),可以直接計(jì)算:

那么實(shí)際得到的能力是Pin與Cp的乘積。

Cp通常是一個二維表,橫坐標(biāo)是TSR(葉尖速與風(fēng)速的比值),縱坐標(biāo)是PITCH Angle(槳葉角)。風(fēng)機(jī)的運(yùn)行數(shù)據(jù)中是包含風(fēng)速 ,轉(zhuǎn)速以及槳葉角信息的,并且通過直接讀入到DataFrame,那么就需要根據(jù)TSR與PA對Cp查表并且插值得到Cp。主要用到scipy.interpolate.interp2d創(chuàng)建插值函數(shù)并查表,另外Dataframe不能直接用插值函數(shù),這里做了個for循環(huán)分行插值查表。

from scipy.interpolate import interp2d
df_rotormap = pd.read_csv('filepath',header = None) #讀取Cp表
x = np.array(df_rotormap.iloc[:,0].dropna()) #Cp表的X坐標(biāo)是TSR
y = np.array(df_rotormap.iloc[:,1]) #Cp表的Y坐標(biāo)是pitch angle
z = np.array(df_rotormap.iloc[:,2:]) #Cp表的具體值,y行x列

rho = 1.225 #kg/m3
s = (141/2)**2*np.pi #m2
df_cal['TSR'] = df_cal['發(fā)電機(jī)轉(zhuǎn)速(PDM1)']/148*141*np.pi/60/df_cal['風(fēng)速']

func_new = interp2d(x,y,z,kind = 'linear') #定義二維表插值函數(shù),選擇線性插值

cp_list = []
for i in range(df_cal.shape[0]):
 cp = float(func_new(df_cal['TSR'][i],df_cal['1號槳葉角度'][i])) #輸入X,Y坐標(biāo), 輸出插值計(jì)算的Cp
 cp_list.append(cp)

df_cal['cp'] = cp_list #把Cp放回到Dataframe中去

df_cal['air_power'] = 0.5*rho*s*df_cal['風(fēng)速']**3*df_cal['cp']

以上這篇python 一維二維插值實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python正則表達(dá)式re.match()匹配多個字符方法的實(shí)現(xiàn)

    python正則表達(dá)式re.match()匹配多個字符方法的實(shí)現(xiàn)

    這篇文章主要介紹了python正則表達(dá)式re.match()匹配多個字符方法的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 用Python生成會跳舞的美女

    用Python生成會跳舞的美女

    大家好,本篇文章主要講的是用Python生成會跳舞的美女,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Python實(shí)現(xiàn)將內(nèi)容轉(zhuǎn)為base64編碼與解碼

    Python實(shí)現(xiàn)將內(nèi)容轉(zhuǎn)為base64編碼與解碼

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)將內(nèi)容轉(zhuǎn)為base64編碼與解碼的示例代碼,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-02-02
  • Python如何對XML 解析

    Python如何對XML 解析

    這篇文章主要介紹了Python對XML 解析的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • python密碼學(xué)Base64編碼和解碼教程

    python密碼學(xué)Base64編碼和解碼教程

    這篇文章主要為大家介紹了python密碼學(xué)Base64編碼和解碼教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Django 對IP訪問頻率進(jìn)行限制的例子

    Django 對IP訪問頻率進(jìn)行限制的例子

    今天小編就為大家分享一篇Django 對IP訪問頻率進(jìn)行限制的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Pytorch mask-rcnn 實(shí)現(xiàn)細(xì)節(jié)分享

    Pytorch mask-rcnn 實(shí)現(xiàn)細(xì)節(jié)分享

    這篇文章主要介紹了Pytorch mask-rcnn 實(shí)現(xiàn)細(xì)節(jié)分享,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • ActiveMQ:使用Python訪問ActiveMQ的方法

    ActiveMQ:使用Python訪問ActiveMQ的方法

    今天小編就為大家分享一篇ActiveMQ:使用Python訪問ActiveMQ的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python實(shí)現(xiàn)的文件同步服務(wù)器實(shí)例

    python實(shí)現(xiàn)的文件同步服務(wù)器實(shí)例

    這篇文章主要介紹了python實(shí)現(xiàn)的文件同步服務(wù)器,實(shí)例分析了文件同步服務(wù)器的原理及客戶端、服務(wù)端的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-06-06
  • Python運(yùn)行異常管理解決方案

    Python運(yùn)行異常管理解決方案

    這篇文章主要介紹了Python運(yùn)行異常管理解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03

最新評論

广丰县| 舞钢市| 大渡口区| 从化市| 石狮市| 且末县| 黄石市| 昌江| 永康市| 南岸区| 碌曲县| 五常市| 含山县| 莒南县| 郴州市| 蒙自县| 祁门县| 焦作市| 崇信县| 两当县| 桃源县| 连云港市| 巴塘县| 彭州市| 墨脱县| 金平| 原平市| 沽源县| 黄大仙区| 阿克| 曲阜市| 志丹县| 清新县| 汶上县| 行唐县| 和静县| 万年县| 萨迦县| 临沂市| 商洛市| 乌兰察布市|