我需要使用DataSet
对mean()
重新取样,sum()
为另一个数据变量。我使用这种有点麻烦的方法:
import xarray as xr
import numpy as np
airtemps = xr.tutorial.load_dataset('air_temperature')
airtemps = airtemps.sel(time=slice('2013-01-01', '2013-12-31'))
airtemps['air'] = airtemps.air - 273.15
airtemps['data'] = (('time', 'lat', 'lon'), np.random.random(airtemps.air.shape))
dataSummed = airtemps.data.resample('M', dim='time', how='sum')
airtemps_month = airtemps.resample('M', dim='time', how='mean')
airtemps_month['data_summed'] = dataSummed
这可以/应该以不同的方式完成吗?
答案 0 :(得分:1)
您希望在DataArrays
中xarray
的{{1}}集合称为Dataset
。因此,请自行重新采样每个DataArray
并构建一个新数据集。有很多方法可以做到这一点,这里有一个:
In [22]: ds = airtemps.air.resample('M', dim='time', how='mean').to_dataset()
In [23]: ds['data_summed'] = airtemps.data.resample('M', dim='time', how='sum')
In [24]: ds
Out[24]:
<xarray.Dataset>
Dimensions: (lat: 25, lon: 53, time: 12)
Coordinates:
* lat (lat) float32 75.0 72.5 70.0 67.5 65.0 62.5 60.0 57.5 55.0 ...
* lon (lon) float32 200.0 202.5 205.0 207.5 210.0 212.5 215.0 ...
* time (time) datetime64[ns] 2013-01-31 2013-02-28 2013-03-31 ...
Data variables:
air (time, lat, lon) float64 -28.68 -28.49 -28.48 -28.67 -28.99 ...
data_summed (time, lat, lon) float64 63.47 66.98 63.67 65.82 61.17 ...