扩展xarray数据集

时间:2016-11-16 20:09:42

标签: python python-xarray

我正在尝试为xarray教程数据集添加霜冻天数。

airtemps = xr.tutorial.load_dataset('air_temperature')
# The set spans more than a year, let's take only one
airtemps = airtemps.sel(time=slice('2013-01-01', '2013-12-31'))
airtemps['air'] = airtemps.air - 273.15

数据在时间上非常高分辨率,因此为了便于处理,我重新采样     air_day = airtemps.resample(' 1D',' time',how =' mean')     air_month = air_day.resample(' 1M',' time',how =' mean')

根据我的结果,我希望air_month中有一个额外的变量,其中包含所有三个维度的平均值低于零的天数。

我的天真尝试将是......像这样

air_month['frost'] = sum(air_day.air < 0)

然而,通过sum(),我在这里放松了时间维度。我被困在这里,仍然无法将xarray的概念包裹在我的脑海里。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你快到了! 并且你的groupby非常相似(并且在某些方面更好,因为xarray的resample还不是groupby)

In [24]: (air_day.air < 0).resample('M', dim='time', how='sum')
Out[24]:
<xarray.DataArray 'air' (time: 12, lat: 25, lon: 53)>
array([[[31, 31, 31, ..., 31, 31, 31],
        [31, 31, 31, ..., 31, 31, 31],
        [31, 31, 31, ..., 31, 31, 31],
        ...,
        [ 0,  0,  0, ...,  0,  0,  0],
        [ 0,  0,  0, ...,  0,  0,  0],
        [ 0,  0,  0, ...,  0,  0,  0]]])
Coordinates:
  * lat      (lat) float32 75.0 72.5 70.0 67.5 65.0 62.5 60.0 57.5 55.0 52.5 ...
  * lon      (lon) float32 200.0 202.5 205.0 207.5 210.0 212.5 215.0 217.5 ...
  * time     (time) datetime64[ns] 2013-01-31 2013-02-28 2013-03-31 ...