沿dask数组的轴应用函数

沿dask数组的轴应用函数,第1张

沿dask数组的轴应用函数

我怀疑如果您的函数返回与它消耗的维相同的数组,您的体验会更流畅。例如,您可以考虑如下定义函数:

def my_polyfit(data):    return np.polyfit(data.squeeze(), ...)[:, None, None, None]

然后,您可能会忽略

new_axis
drop_axis
位。

在性能方面,您可能还想考虑使用更大的块大小。如果每个块有6000个数字,那么您将有超过一百万个块,这意味着与实际计算相比,您可能会花费更多的时间进行调度。通常,我会拍摄几兆字节的块。当然,增加块大小会导致映射函数变得更加复杂。

In [1]: import dask.array as daIn [2]: import numpy as npIn [3]: def f(b):    return np.polyfit(b.squeeze(), np.arange(5), 3)[:, None, None, None]   ...:In [4]: x = da.random.random((5, 3, 3, 3), chunks=(5, 1, 1, 1))In [5]: x.map_blocks(f, chunks=(4, 1, 1, 1)).compute()Out[5]: array([[[[ -1.29058580e+02,   2.21410738e+02,   1.00721521e+01],         [ -2.22469851e+02,  -9.14889627e+01,  -2.86405832e+02],         [  1.40415805e+02,   3.58726232e+02,   6.47166710e+02]],         ...


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5661951.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存