如何用xarray实现跨年度(6月至次年5月)的年平均计算?
跨年度(6月-次年5月)平均的单行实现
当然有!你只需要调整分组的年份标识逻辑,就能用一行简洁的代码实现这个跨年度平均计算,和你原来的日历年平均代码风格保持一致:
sst_JUN_MAY = ds['sst'].groupby((ds['time.month'] >= 6) + ds['time.year']).mean(dim='time')
代码逻辑解释:
ds['time.month'] >= 6会生成一个布尔数组,6-12月为True(数值上等价于1),1-5月为False(数值上等价于0)- 把这个布尔数组和
ds['time.year']相加后,6-12月的年份会被加1,1-5月保持原年份 - 这样分组后,每个年份组就自动包含了前一年6月到当年5月的所有数据,完美匹配你要的跨年度统计周期
如果你希望分组的年份标签更直观(比如2000年的组明确对应1999年6月-2000年5月),也可以用xr.where来更清晰地定义分组键,写成一行也没问题:
sst_JUN_MAY = ds['sst'].groupby(xr.where(ds['time.month'] >= 6, ds['time.year'] + 1, ds['time.year'])).mean(dim='time')
这两种写法都能高效完成你的需求,和原代码一样简洁优雅~
内容的提问来源于stack exchange,提问作者Leo van Kampenhout
相关产品推荐
相关产品推荐

