Numpy 问题xarray.apply_ufunc在groupby对象上(缺少输出\u数据类型)
我正在尝试对具有dask并行化的groupby对象使用xarray.apply_func,但出现错误 数据集包含特定位置30年的每日温度数据,网格为1km²。因此,数据形状为10950x1450x900(分别为天、Y轴和X轴) 主要目标是对每个位置和每年的值进行排序。更重要的是,算法必须具有内存效率 由于数据量巨大(~120gb),无法放入内存,我尝试使用Numpy 问题xarray.apply_ufunc在groupby对象上(缺少输出\u数据类型),numpy,sorting,dask,python-xarray,numpy-ufunc,Numpy,Sorting,Dask,Python Xarray,Numpy Ufunc,我正在尝试对具有dask并行化的groupby对象使用xarray.apply_func,但出现错误 数据集包含特定位置30年的每日温度数据,网格为1km²。因此,数据形状为10950x1450x900(分别为天、Y轴和X轴) 主要目标是对每个位置和每年的值进行排序。更重要的是,算法必须具有内存效率 由于数据量巨大(~120gb),无法放入内存,我尝试使用dask进行排序,但从我的研究中,我发现dask和任何其他已知的lib(xarray、numpy…)都没有简单的解决方案(如果有的话) das
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'时,必须提供输出数据类型(output\u dtypes)才能应用\u func
我是否做错了什么,或者apply\u ufunc
不支持groupby
对象
从xarray的参数也可以是组
*args(数据集、数据数组、分组依据、变量、numpy.ndarray、dask.array.array或scalar)–要应用函数的标记数组和/或未标记数组的混合
我不知道如何正确使用它
无论如何,如果您能提出任何工作方法,我将不胜感激。请给出一个可复制的示例:请让我知道我还可以展示什么。>…完成–提供其他人需要的所有部分,以重现问题中的问题。我需要某种方法跨时间维度对整个数据集进行排序。但我想这是没有办法的