如果可以表达功能
f(in[i][j],in[i+1][j],in[i-1][j],in[i][j+1],in[i][j-1],…)
作为一个线性算,你可以使用SciPy的的signal.convolve2d函数来做到这一点。例如,假设您有一个50x50的数组A,并且要计算第二个数组B,其中每个元素
b[ij]都是
a[i,j],a[(i-1),j], a[i,(j-1)], a[(i-1),(j-1)]数组A的平均值。您可以这样做:
A = # your first arrayB = numpy.ones((2,2))/4C = scipy.signal.convolve2d(A,B, 'valid')
当执行卷积时,数组B在A上“滑动”,将相应的元素相乘并求和。由于边界效应,在使用结果数组C时必须小心。这里,C的形状为49x49,这是因为中的
'valid'参数
convolve2d要丢弃第一行和第一列,因为它们包含边界效应。如果您希望有一个50x50的数组而不丢弃,则可以将该参数交换为
'same'
编辑 :也许如果您能告诉我更多有关您需要的功能的信息,我可以帮助您更具体地将其转换为用于进行2D卷积的数组。
希望有帮助!



