python画图数据的平均值怎么算的_Python气象数据处理与绘图(2):常用数据计算方法...
對于氣象繪圖來講,第一步是對數(shù)據(jù)的處理,通過各類公式,或者統(tǒng)計(jì)方法將原始數(shù)據(jù)處理為目標(biāo)數(shù)據(jù)。
按照氣象統(tǒng)計(jì)課程的內(nèi)容,我給出了一些常用到的統(tǒng)計(jì)方法的對應(yīng)函數(shù):
import numpy as np
平均值
在計(jì)算氣候態(tài),區(qū)域平均時(shí)均要使用到求均值函數(shù),對應(yīng)NCL中的dim_average函數(shù),在python中通常使用np.mean()函數(shù)
numpy.mean(a, axis, dtype)
假設(shè)a為[time,lat,lon]的數(shù)據(jù),那么
·axis 不設(shè)置值,對 timelatlon 個(gè)值求均值,返回一個(gè)數(shù)
·axis = 0:壓縮時(shí)間維,對每一個(gè)經(jīng)緯點(diǎn)求均值,返回 [lat, lon] 數(shù)組(如求一個(gè)場的N年氣候態(tài))
·axis =1,2 :壓經(jīng)度緯度,對每個(gè)時(shí)間求平均值,返回 [time] 矩陣(如求某時(shí)間序列,或指數(shù))
需要特別注意的是,氣象數(shù)據(jù)中常有缺測,在NCL中,使用求均值函數(shù)會自動(dòng)略過,而在python中,當(dāng)任意一數(shù)與缺測(np.nan)計(jì)算的結(jié)果均為np.nan,比如求[1,2,3,4,np.nan]的平均值,結(jié)果為np.nan
因此,當(dāng)數(shù)據(jù)存在缺測數(shù)據(jù)時(shí),通常使用np.nanmean()函數(shù),用法同上,此時(shí)[1,2,3,4,np.nan]的平均值為(1+2+3+4)/4 = 2.5
同樣的,求某數(shù)組最大最小值時(shí)也有np.nanmax(), np.nanmin()函數(shù)來補(bǔ)充np.max(), np.min()的不足。
其他很多np的計(jì)算函數(shù)也可以通過在前邊加‘nan’來使用。
另外,
a[np.isnan(a)] = 0
也可以直接將a中缺失值全部填充為0。
標(biāo)準(zhǔn)差
np.std(a, axis, dtype)
用法同np.mean()
標(biāo)準(zhǔn)化
在NCL中有直接求數(shù)據(jù)標(biāo)準(zhǔn)化的函數(shù)dim_standardize()
我目前并未找到python中可以直接求數(shù)據(jù)標(biāo)準(zhǔn)化的函數(shù)(sklearn庫中有標(biāo)準(zhǔn)化,但感覺不如公式直接計(jì)算方便)。根據(jù)公式,
x = (x - np.mean(x)) / np.std(x)
其實(shí)也就是一行的事,根據(jù)需要指定維度即可。
相關(guān)系數(shù)
皮爾遜相關(guān)系數(shù):
相關(guān)可以說是氣象科研中最常用的方法之一了,numpy函數(shù)中的np.corrcoef(x, y)就可以實(shí)現(xiàn)相關(guān)計(jì)算。但是在這里我推薦scipy.stats中的函數(shù)來計(jì)算相關(guān)系數(shù):
from scipy.stats import pearsonr
r,p = pearsonr(x, y)
這個(gè)函數(shù)缺點(diǎn)和有點(diǎn)都很明顯,優(yōu)點(diǎn)是可以直接返回相關(guān)系數(shù)R及其P值,這避免了我們進(jìn)一步計(jì)算置信度。而缺點(diǎn)則是該函數(shù)只支持兩個(gè)一維數(shù)組的計(jì)算,也就是說當(dāng)我們需要計(jì)算一個(gè)場和一個(gè)序列的相關(guān)時(shí),我們需要循環(huán)來實(shí)現(xiàn)。
r = np.zeros((a.shape[1],a.shape[2]))
p = np.zeros((a.shape[1],a.shape[2]))
for i in range(sic.shape[1]):
for j in range(sic.shape[2]):
r[i,j], p[i,j] = pearsonr(b , a[:,i,j])
其中a[time,lat,lon],b[time]
線性回歸系數(shù)
(NCL中為regcoef()函數(shù))
同樣推薦Scipy庫中的stats.linregress(x,y)函數(shù):
slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)
slop: 回歸斜率
intercept:回歸截距
r_value: 相關(guān)系數(shù)
p_value: P值
std_err: 估計(jì)標(biāo)準(zhǔn)誤差
直接可以輸出P值,同樣省去了做置信度檢驗(yàn)的過程,遺憾的是仍需同相關(guān)系數(shù)一樣循環(huán)計(jì)算。
總結(jié)
以上是生活随笔為你收集整理的python画图数据的平均值怎么算的_Python气象数据处理与绘图(2):常用数据计算方法...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有关vs平台工作集
- 下一篇: python字典格式_python –