首页 > 解决方案 > 关于 xarray apply_ufunc

问题描述

我正在尝试从 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),   

标签: daskpython-xarrayxarray

解决方案


如果您已经可以使用groupby()和其他 xarray 方法编写分析,那么所有这些都已经与 dask 并行化。apply_ufunc更容易包装功能以支持 xarray 和 dask,但 xarray 中的所有内置例程已经使用apply_ufunc或内部类似的东西来支持 dask。

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


推荐阅读