Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Numpy 问题xarray.apply_ufunc在groupby对象上(缺少输出\u数据类型)_Numpy_Sorting_Dask_Python Xarray_Numpy Ufunc - Fatal编程技术网

Numpy 问题xarray.apply_ufunc在groupby对象上(缺少输出\u数据类型)

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并行化的groupby对象使用xarray.apply_func,但出现错误

数据集包含特定位置30年的每日温度数据,网格为1km²。因此,数据形状为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'时,必须提供输出数据类型(output\u dtypes)才能应用\u func

我是否做错了什么,或者
apply\u ufunc
不支持
groupby
对象

从xarray的参数也可以是组

*args(数据集、数据数组、分组依据、变量、numpy.ndarray、dask.array.array或scalar)–要应用函数的标记数组和/或未标记数组的混合

我不知道如何正确使用它


无论如何,如果您能提出任何工作方法,我将不胜感激。

请给出一个可复制的示例:请让我知道我还可以展示什么。>…完成–提供其他人需要的所有部分,以重现问题中的问题。我需要某种方法跨时间维度对整个数据集进行排序。但我想这是没有办法的