【问题标题】:Using Xarray to find decade averages使用 Xarray 查找十年平均值
【发布时间】:2021-10-20 14:34:27
【问题描述】:

我正在分析大气数据,我需要对某个位置十多年的参数取平均值。我有 1950-2020 年的数据,需要取 1950-1959、1960-1969 等年的数据。 我已经使用 ds_annual_means = ds.groupby('time.year').mean() 来获得年平均值,但似乎没有比一年更大的组......

我也尝试过按箱分组,但这似乎并没有产生我想要的结果,并且由于它将时间参数更改为 (obj) 而不是 (datetime64[ns]),我无法保存它是一个 .nc 文件,这是我的最终目标。

任何建议将不胜感激!

This is what I have so far

【问题讨论】:

    标签: python-xarray


    【解决方案1】:

    天真地,我会尝试创建自己的“按十年分组”功能。
    比如:

    start = 1950
    end = 2020
    accumulator = []
    for year in range(start, end, 10)
        decade_mask = ds.time.dt.year.isin(range(year, year+10)
        decade_mean = ds.sel(time=decade_mask)).mean()
        accumulator.append(decade_mean)
    result = xarray.concat(accumulator, dim="time")
    

    我不确定这是不是最好的方法。

    【讨论】:

      【解决方案2】:

      只需创建一个指定十年的新变量,然后按该变量分组:

      year = ds["time"].dt.year
      decade = ((year - year[0]) / 10).astype(int)
      

      当然,请注意第一年是否适合从开始计数。

      接下来,将其分配给您的数据集,并像使用 dt.year 一样分组:

      ds["decade"] = decade
      result = ds["atmospheric_data"].groupby("decade").mean("time")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-09
        • 2020-06-19
        • 1970-01-01
        • 2021-03-28
        • 2022-01-17
        • 2021-10-09
        • 2020-06-19
        相关资源
        最近更新 更多