python – 2d数组中8个邻居的总和

我需要找到一个单元格的所有相邻元素的总和,比如getsumofneighbors(matrix,i,j):

'M*N matrix'
[[0 1 0]
 [2 0 1]
 [0 4 0]
 [0 0 0]]

单元[0] [0]的最近元素之和为3

在[1] [0]是5

在[1] [1]是8

是否有一个python库来查找给定单元格旁边所有元素的总和?

如果您不介意对scipy的依赖,可以使用 scipy.ndimage.convolve,如下所示:

In [475]: a
Out[475]: 
array([[0, 1, 0],
       [2, 0, 1],
       [0, 4, 0],
       [0, 0, 0]])

In [476]: kernel
Out[476]: 
array([[1, 1, 1],
       [1, 0, 1],
       [1, 1, 1]])

In [477]: from scipy.ndimage import convolve

In [478]: c = convolve(a, kernel, mode='constant')

In [479]: c
Out[479]: 
array([[3, 3, 2],
       [5, 8, 5],
       [6, 3, 5],
       [4, 4, 4]])
相关文章
相关标签/搜索