我有一个形状为 (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]
原文由 ChristineB 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以像这样创建一个掩码数组:
这输出: