1

我正在尝试将霜冻天数添加到 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' , 如何='意思')

结果,我想在air_month所有三个维度上添加一个额外的变量,其中包含平均值低于零的天数。

我非常天真的尝试将是……。像这样

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

但是通过sum()ing,我在这里失去了时间维度。我被困在这里,仍然没有将 xarray 概念包裹在我的脑海中。

感谢帮助!

4

1 回答 1

0

你快到了!而且您的 groupby 非常相似(并且在某些方面更好,因为 xarray 的重新采样还不是 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 ...
于 2016-11-17T01:01:55.900 回答