我有一个形状为(64,17)的矩阵,对应时间和纬度。我想要进行加权纬度平均,我知道np.average可以做到这一点,因为它可以使用权重参数,而np.nanmean则不能用于加权平均经度。然而,与np.nanmean不同,np.average不会忽略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]
np.mean
函数。 - Alexnp.ma.average
来处理掩码数组。请注意.ma
。 - Alex