可能最简洁的方法是使用
2D convolution
:
In [1]: import numpy as np
In [2]: from scipy.signal import convolve2d
In [3]: kernel = np.array([[0, 1, 0],
...: [1, 1, 1],
...: [0, 1, 0]])
...:
In [4]: grid = [[ 0, 1, 2, 3],
...: [ 4, 5, 6, 7],
...: [ 8, 9, 10, 11],
...: [12, 13, 14, 15]]
...:
In [5]: convolve2d(grid, kernel, mode='same')
Out[5]:
array([[ 5, 8, 12, 12],
[17, 25, 30, 27],
[33, 45, 50, 43],
[33, 48, 52, 40]])