Dask 关于xarray申请

Dask 关于xarray申请,dask,python-xarray,xarray,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}) DAYM

我试图从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))
TA的尺寸如下所示:

    <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),   

尺寸:(纬度:720,经度:1440,时间:2928)
协调:
*lon(lon)浮动64 0.125 0.375 0.625 0.875 1.125 1.375 1.625 1.875。。。
*lat浮动64-89.88-89.62-89.38-89.12-88.88-88.62-88.38。。。
*时间日期时间64[ns]2008-01-01 2008-01-01T03:00:00。。。
数据变量:

tas(time,lat,lon)float32 dask.array如果您已经可以使用
groupby()
和其他xarray方法编写分析,那么所有这些方法都已经与dask并行
apply_func
可以更轻松地包装新功能以支持xarray和dask,但xarray中的所有内置例程都已使用
apply_func
或类似的内部功能来支持dask


作为旁注:如果您能详细说明您在xarray文档中发现的混淆或缺失之处,我们将一直努力改进它们

很抱歉反应太慢。我的主要困惑与(i)“输入核心dims”有关,它始终是计算发生的维度(ii)输入xr.Dataset是否必须是二维的才能工作(如示例所示?)我想如果是这种情况,那么在应用ufunc之前,一个堆栈和一个维度的反堆栈lat和lon。(iii)这是否允许使用内置的scipy函数(例如,可以使用scipy spearman函数应用ufunc)。我想在那一页上再举一两个例子会很有帮助。顺便说一句,谢谢你们提供了所有已经存在的文档。这非常有用。上面提到的混乱可能只是因为我已经很久没有使用xarray(和类似的PKG)了。再次感谢你@Shrad我在这篇文章中也有类似的问题