如何在 3D 数组中映射排序函数以便与 d​​ask 并行化?

问题描述

在 xarray 中工作,我试图通过在前两个维度上映射排序函数来对 6x53x9001 数组的第三个维度 (wavenumber) 进行排序。我已经通过嵌套两个 for 循环实现了这一点,但是 dask 的并行功能似乎不允许这种类型的索引:

def sort(o_depth):
    for i in range(0,6):
        for j in range(0,53):
            odepth_sorted[i,j] = o_depth[i,j].sortby(o_depth[i,j]).values
    return odepth_sorted
        
odepth_sorted = sort(o_depth)

排序取决于我正在查看的 9001 波数的 [i,j] 列,这是我在尝试应用/映射函数时遇到的问题。我可以将我的索引减少到一个“i”,然后让我应用这样的函数

def sort(o_depth):
    return o_depth.sortby(o_depth).values

odepth_sorted = o_depth[0].groupby("level").map(sort)

但是,我还有另外 5 个要执行此操作,但仍然不确定如何最好地将此类操作与 dask 并行化 - 延迟此特定函数并运行 .compute() 会出现错误“未指定长度的延迟对象是不可迭代”。有什么想法或建议吗?提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)