如何解决组对象上的问题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
对象?
也可以是组
* args(数据集,数据数组, GroupBy ,变量,numpy.ndarray,dask.array.Array或标量)–要将功能应用到的带标签和/或无标签数组的混合。 / p>
我对如何正确使用它感到困惑。
无论如何,如果您提出任何可行的方法,将不胜感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。