Dask.array转换逐点数组操作

问题描述 投票:0回答:1

根据一般的numpy操作“逐步化”逐点函数是否可行?

案例+部分解决方案: 例如,请看这里:https://github.com/SciTools/iris/pull/2964

关键是我们要从另一个库中应用通用数组操作,但它只能在实际的numpy数组上运行。 而我们希望它在此操作中对现有的dask数组进行操作,并生成一个惰性结果,以便有效地计算子数组。 这就是为什么它使用da.from_array ...

备择方案: 您可以改为使用延迟,但如果这样做,则必须每次都评估整个参数,即使结果是子索引的。

或者你可以使用frompyfunc http://dask.pydata.org/en/latest/array-api.html#dask.array.frompyfunc 但是它使用标量函数,而不是数组函数。 这是低效的,特别是当它返回一个对象数组而不是数字时。

剩下的问题: 在上面的部分解决方案中,缺失的部分是“透视”不透明点计算包装器的能力,因此其dask参数对整个图形是可见的。 ?也许在Dask中有一种方法可以揭露目前隐藏在这个dask_array构造中的from_array(ArraylikeWrapper(dask_array))论证?

python arrays numpy dask
1个回答
1
投票

你试过da.map_blocks吗?

x = x.map_blocks(func)

如果你能够创建那些(尽管__array_ufunc__可能更容易),Dask还支持使用map_blocks协议的NumPy ufuncs。

© www.soinside.com 2019 - 2024. All rights reserved.