如何应用带有dask的平滑滤镜

时间:2016-10-06 04:44:08

标签: python dask

我有一个二维数组,我想用内核进行二维卷积,例如一个简单的扁平方阵。

例如参见:http://nbviewer.jupyter.org/gist/zonca/f0d819048ef7318eff944396b71af1c4

有没有办法用dask运行这个多线程?

1 个答案:

答案 0 :(得分:0)

map_overlap方法可以做你想要的。它允许您在阵列的块上映射函数,其中这些块已经使用来自附近块的重叠区域进行了预缓冲。

以下内容可能是一个好的开始:

In [1]: import numpy as np
In [2]: x = np.random.normal(10, 1, size=(1000, 1000))

In [3]: from scipy.signal import convolve2d

In [4]: import dask.array as da
In [5]: d = da.from_array(x, chunks=(500, 500))

In [6]: filt = np.ones((8, 8))

In [7]: d.map_overlap(convolve2d, in2=filt, depth=8)
Out[7]: dask.array<trim-de..., shape=(1000, 1000), dtype=None, chunksize=(500, 500)>

虽然请注意,您提供的滤镜既平滑又放大。您可能还需要在convolve2d中进行修剪。