假设我有一个简单的数组:
data = [1,1,0,0,1,1,1]
我可以使用 scipy ndimage 模块对这些数据应用标签:
groups, _ = sp.ndimage.label(data)
导致
In [68]: print(groups)
[1 1 0 0 2 2 2]
现在,我想在 xarray DataArray 上执行相同的标记功能。
xr_data = xr.DataArray([1,1,0,0,1,1,1], coords = [("x", [0,1,2,3,4,5,6])])
我知道我可以在 上调用与以前相同的函数xr_data
,但是执行此调用的输出是一个 numpy 数组,在我的实际数据集中,它太大而无法放入内存。
看来这个xr.apply_ufunc
功能是我需要的。但是,我无法让它工作。
def xr_label(arr):
return xr.apply_ufunc(sp.ndimage.label, arr)
xr_groups, _ = xr_label(xr_data)
这导致:“ ValueError:应用函数返回的数据具有意外的维度数。收到 0 个维度,但预期 1 个维度的名称为:('x',)”
我发现有关 apply_ufunc 方法的文档难以解释。有人可以帮我解决这个问题吗?