我试图从3小时全球数据集中计算每日Tmax。我可以使用groupby来做,但我想弄清楚如何通过使用dask并行操作(例如使用apply_ufunc)来减少计算时间。如果有一个关于ufunc的好文档,请告诉我(关于xarray的文档对我来说还不够详细,让我有点困惑,因为我没有任何关于dask的经验)。谢谢!
以下是我的代码:
TAS = xr.open_dataset(INFILE_template.format(YR, YR), chunks={'time':8})
DAYMAX = TAS.groupby('time.dayofyear').max(dim='time')
DAYMAX.to_netcdf(OUTFILE_template.format(YR, YR))
TAS的维度如下:
<xarray.Dataset>
Dimensions: (lat: 720, lon: 1440, time: 2928)
Coordinates:
* lon (lon) float64 0.125 0.375 0.625 0.875 1.125 1.375 1.625 1.875 ...
* lat (lat) float64 -89.88 -89.62 -89.38 -89.12 -88.88 -88.62 -88.38 ...
* time (time) datetime64[ns] 2008-01-01 2008-01-01T03:00:00 ...
Data variables:
tas (time, lat, lon) float32 dask.array<shape=(2928, 720, 1440),
答案 0 :(得分:2)
如果您已经可以使用groupby()
和其他xarray方法编写分析,则所有这些方法都已使用dask进行并行化。 apply_ufunc
可以更轻松地包装 new 功能以支持xarray和dask,但xarray中的所有内置例程已经在内部使用apply_ufunc
或类似内容来支持dask。< / p>
作为旁注:如果您能够详细说明您在xarray文档中发现的令人困惑或遗漏的内容,我们一直在寻求改进它们!