You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Xarray计算DJF及12月/1月DJ冬季季节平均值

Xarray 跨年度冬季(DJF/DJ)平均计算方案

DJ(12月-次年1月)双月平均实现

推荐用自定义冬季分组的方法,逻辑清晰可控,适配所有非标准跨年度季节计算:

# 1. 生成冬季所属年份标签:12月归属下一年,其余月份归属当前年
winter_year = ds.time.dt.year.where(ds.time.dt.month != 12, ds.time.dt.year + 1)
# 2. 筛选DJ时段(仅保留12月、1月的数据)
dj_data = ds.sel(time=ds.time.dt.month.isin([12, 1]))
# 3. 按冬季年份分组求平均,得到每年的DJ季节平均
dj_mean = dj_data.groupby(winter_year.sel(time=dj_data.time)).mean(dim="time")
# 可选:将维度重命名为winter_year更符合语义
dj_mean = dj_mean.rename({"time": "winter_year"})

如果需要计算DJF平均,只需将第二步的月份筛选条件改为isin([12, 1, 2])即可,无需修改其他逻辑。

重采样法实现DJ平均(可选)

如果你更习惯用重采样逻辑,可通过自定义重采样参数实现:

# 以2个月为周期重采样,偏移设置适配12月-次年1月的分组逻辑,最终筛选2月标记的分组即为DJ平均
dj_mean = ds.resample(
    time="2MS", 
    offset="-1 month", 
    closed="left", 
    label="right"
).mean(dim="time").sel(time=ds.time.dt.month == 2)

结果校验建议

  • 打印分组结果验证逻辑:print(dj_data.time.groupby(winter_year.sel(time=dj_data.time)).groups),确认每个分组的时间为上一年12月+当年1月
  • 单点手动计算校验:任选一个格点,手动计算1-2年的DJ平均结果和代码输出对比,避免逻辑误差

内容的提问来源于stack exchange,提问作者franke11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:42:00