关于xarray apply_ufunc

时间:2018-05-25 07:04:56

标签: dask python-xarray xarray

我试图从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),   

1 个答案:

答案 0 :(得分:2)

如果您已经可以使用groupby()和其他xarray方法编写分析,则所有这些方法都已使用dask进行并行化。 apply_ufunc可以更轻松地包装 new 功能以支持xarray和dask,但xarray中的所有内置例程已经在内部使用apply_ufunc或类似内容来支持dask。< / p>

作为旁注:如果您能够详细说明您在xarray文档中发现的令人困惑或遗漏的内容,我们一直在寻求改进它们!