问题描述
我正尝试在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 (将#修改为@)