【问题标题】:Keeping time-series while grouping by season in xarray在 xarray 中按季节分组时保持时间序列
【发布时间】:2022-05-13 04:08:47
【问题描述】:

我想要每年的冬季 (DJF) 平均值来绘制时间序列。

我知道如果我有一个数据数组 (DA),我可以按季节分组。我不知道接下来要做什么,我看到的所有示例都是关于季节性平均值的,它完全移除了时间轴:

DA.groupby('time.season').mean(dim='time').sel(season='DJF')

我想做这样的事情:

DA.groupby('time.season').sel(season='DJF').groupby('time.year').mean(dim='time')

每年每个冬天都有一个数据点。

【问题讨论】:

    标签: group-by python-xarray


    【解决方案1】:

    您可以直接访问您的时间维度的datetime components,并使用它进行选择和分组。

    你想要的可以做:

    # select DJF
    DA_DJF = DA.sel(time=DA.time.dt.season=="DJF")
    
    # calculate mean per year
    DA_DJF.groupby(DA_DJF.time.dt.year).mean("time")
    

    【讨论】:

    • 请注意,这对于季节是不正确的,因为 12 月取自与 1 月和 2 月相同的年份。对于 DJF 季节平均值,您必须取上一年的 12 月值。我正在尝试找出一种方法来从多年数据集中包含年份时间戳(上面的 groupby year 不适用于正确的 DJF 季节性平均值,因为您涉及两年)。 @安妮苏菲
    【解决方案2】:

    在 Xarray 的 resample 上有一个示例,展示了如何将每月时间序列数据下采样为季节性数据。假设你有一年中的所有月份,使用

    DA.resample(time='QS-DEC').mean(dim="time")
    

    将为您提供 DJF、MAM、JJA 和 SON 平均值的年度时间序列。在这个新系列中,DJF 的月份 = 12,MAM 的月份 = 3,JJA 的月份 = 6,SON 的月份 = 9。

    请务必注意,DJF 的平均值是指 12 月的年份,而不是 1 月至 2 月的年份。

    【讨论】:

      猜你喜欢
      • 2021-10-09
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      • 1970-01-01
      • 2017-03-11
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多