Xarray 按多次运行和时间分组

Xarray group by multiple runs and time

我有一个如下所示的 xarray 数据集:

<xarray.Dataset>
Dimensions:          (lat: 100, lon: 130, model: 7, month: 240)
Coordinates:
    lev              float64 1.0
  * month            (month) datetime64[ns] 2040-01-01 2040-02-01 ... 2059-12-01
  * lon              (lon) float32 -99.375 -99.291664 ... -88.708336 -88.625
  * lat              (lat) float32 49.78038 49.696426 ... 41.552795 41.46884
  * model            (model) object 'bcc-csm1-1' 'CCSM4' ... 'MRI-CGCM3'
Data variables:
    month_mean_snow  (month, lat, lon) float32 ...
    month_mean_tmin  (model, month, lat, lon) float32 nan nan ... -6.0107846
    month_mean_tmax  (model, month, lat, lon) float32 nan nan ... -0.30793613
    month_mean_prec  (model, month, lat, lon) float32 nan nan ... 0.5480785
    month_mean_relh  (model, month, lat, lon) float32 nan ... 69.789246
    month_mean_wspd  (model, month, lat, lon) float32 nan 4.9480243 ... 9.585804
    month_mean_rads  (model, month, lat, lon) float32 nan 21.520756 ... 34.00794

用例是我有 7 个不同的气候 运行 数据,然后我将其重新采样为每月时间尺度。

问:如何同时对模型和月份进行分组?

预期结果:尺寸(纬度:100,经度:130,月=12)

当我 运行 时我得到了什么:

res.groupby('month.month', 'model').mean('month', 'model')

是尺寸(纬度:100,lon:130,型号:7,月份:12)。

我是否需要在 groupby 之前挤压或以某种方式扩展模型/月,然后在月进行?

试试这个:

res.groupby('month.month').mean(dim=['model','month'])