【发布时间】:2016-06-15 22:49:18
【问题描述】:
我有一个形状 (64,17) 对应于时间和纬度的矩阵。我想采用加权纬度平均值,我知道 np.average 可以这样做,因为与我用来平均经度的 np.nanmean 不同,可以在参数中使用权重。但是,np.average 不会像 np.nanmean 那样忽略 NaN,因此我每行的前 5 个条目都包含在纬度平均中,并使整个时间序列充满 NaN。
有没有一种方法可以在不包含 NaN 的情况下进行加权平均?
file = Dataset("sst_aso_1951-2014latlon_seasavgs.nc")
sst = file.variables['sst']
lat = file.variables['lat']
sst_filt = np.asarray(sst)
missing_values_indices = sst_filt < -8000000 #missing values have value -infinity
sst_filt[missing_values_indices] = np.nan #all missing values set to NaN
weights = np.cos(np.deg2rad(lat))
sst_zonalavg = np.nanmean(sst_filt, axis=2)
print sst_zonalavg[0,:]
sst_ts = np.average(sst_zonalavg, axis=1, weights=weights)
print sst_ts[:]
输出:
[ nan nan nan nan nan
27.08499908 27.33333397 28.1457119 28.32899857 28.34454346
28.27285767 28.18571472 28.10199928 28.10812378 28.03411865
28.06411552 28.16529465]
[ nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan]
【问题讨论】:
标签: python numpy latitude-longitude weighted-average