使用不同的方法对 xarray 数据集进行重采样
Resampling xarray DataSet using different methods
我需要对 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
Can/should这有什么不同吗?
您想要 DataArrays
的集合,在 xarray
中称为 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 ...
我需要对 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
Can/should这有什么不同吗?
您想要 DataArrays
的集合,在 xarray
中称为 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 ...