0

我需要为另一个数据变量重新采样一个使用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

可以/应该以不同的方式完成吗?

4

1 回答 1

1

您想要一个集合,DataArrays其中 inxarray称为 a 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 ...
于 2016-12-05T20:21:00.033 回答