我有一个二维数组,我想用内核进行二维卷积,例如一个简单的扁平方阵。
例如参见:http://nbviewer.jupyter.org/gist/zonca/f0d819048ef7318eff944396b71af1c4
有没有办法用dask
运行这个多线程?
答案 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中进行修剪。