люди обычно используют свёртку ядра scipy.
пожалуйста, дайте мне знать, если это соответствует вашему вопросу.
from scipy import ndimage
a = np.array([[1, 2, 0, 0],[5, 3, 0, 4], [0, 0, 0, 7],[9, 3, 0, 0]])
k = np.array([[1,1,1],[1,1,0],[1,0,0]])
ndimage.convolve(a, k, mode='constant', cval=0.0)
array([[11, 10, 7, 4],
[10, 3, 11, 11],
[15, 12, 14, 7],
[12, 3, 7, 0]])