0
我有一個xarray數據集是:在datetime64尺寸蟒xarray的concat GROUPBY
ds
<xarray.Dataset>
Dimensions: (lat: 360, lon: 720, time: 3652)
Coordinates:
* lon (lon) float32 -179.75 -179.25 -178.75 -178.25 -177.75 -177.25 ...
* lat (lat) float32 89.75 89.25 88.75 88.25 87.75 87.25 86.75 86.25 ...
* time (time) datetime64[ns] 2010-01-01 2010-01-02 2010-01-03 ...
Data variables:
dis (time, lat, lon) float64 nan nan nan nan nan nan nan nan nan...
有在DIS變量的NaN但整個陣列是不NaN的。 維度時間的長度對應於10年的日常數據(3652天)。
我想要做的是獲得10年時間序列的每月平均值,每個月和每個網格平方(經度,緯度)。 那麼輸出數據集將是:我看到,幾乎
Dimensions: (lat: 360, lon: 720, time: 12) #<<< or 'months'
一種選擇我想要做什麼是:
ds.dis.groupby('time.month').mean()
然而,它的輸出僅僅是一個12項陣列。即我們失去了經度和緯度。
<xarray.DataArray 'dis' (month: 12)>
array([ 368.26764123, 394.0543304 , 424.67056092, 476.94943773,
522.383195 , 516.37355647, 497.74700652, 472.46993274,
456.87268206, 402.44729131, 367.41928436, 362.6121917 ])
Coordinates:
* month (month) int64 1 2 3 4 5 6 7 8 9 10 11 12
我認爲有可能簡單的方法來使用datetime64方法來做到這一點,但我一直在努力使它們充分感覺到它們。
唉,而寫這我已經做管理:
stacked = xr.concat([ds.dis[tlist[month,:],:,:].mean(dim='time',skipna=True) for month in range(0,12)],dim='month')
這給:
<xarray.DataArray 'dis' (month: 12, lat: 360, lon: 720)>
然而,還有另一個更Python的方式更符合的第一行代碼使用通過...分組?
感謝
謝謝 - 也適用於'skipna = True「' – dreab