微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

组对象上的问题xarray.apply_ufunc缺少output_dtypes

如何解决组对象上的问题xarray.apply_ufunc缺少output_dtypes

我正尝试在daby并行化的groupby对象上使用xarray.apply_ufunc,但出现错误

数据集包含在1km²网格的特定位置上30年的每日温度数据。因此,数据形状为10950x1450x900(天,分别为Y轴和X轴)。

主要目标是对每个位置和每年的值进行排序。而且更重要的是算法必须高效存储

由于数据量巨大(〜120gb)并且无法容纳到内存中,因此我尝试使用dask进行排序,但是从我的研究中我发现,使用dask或任何其他已知的lib都没有简单的解决方案(xarray,numpy ...)(如果有的话)

dask没有实现任何排序算法,因为它对于并行化等非常复杂。

只有函数dask给我们的是topk方法,该方法从排序返回第0个元素到第N个元素。当应用于整个数据集时,内存将达到100%。

因此,现在我尝试在启用numpy.sort并行化的情况下运行dask,以查看是否可以这样做。但是我什至无法测试它,因为它会引发错误

使用的代码

xarray.apply_ufunc(numpy.sort,dataset.groupby('time.year'),kwargs={'axis': 0},dask='parallelized',output_dtypes=[numpy.float64])

错误

ValueError:使用dask ='parallelized'时,必须将输出dtypes(output_dtypes)提供给apply_func

我是在做错事还是apply_ufunc不支持groupby对象?

xarray的docs args中的

也可以是组

* args(数据集,数据数组, GroupBy ,变量,numpy.ndarraydask.array.Array或标量)–要将功能应用到的带标签和/或无标签数组的混合。 / p>

我对如何正确使用它感到困惑。

无论如何,如果您提出任何可行的方法,将不胜感激。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。