bugfix> dask > 投稿

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 件
  • すでに groupby() で分析を作成できる場合  その他のxarrayメソッドでは、これらはすべてdaskですでに並列化されています。 apply_ufunc  ラップしやすくする新着 xarrayとdaskをサポートする機能ですが、xarrayのすべての組み込みルーチンは既に apply_ufunc を使用しています  または内部的に同様の何かで、暗闇をサポートしています。

    副次的な注意事項として、xarray docsで紛らわしいものや欠落しているものについて親切に詳しく説明できる場合は、常に改善を図っています!

あなたの答え