You can use Scipy maximum_filer -
from scipy.ndimage.filters import maximum_filter arr*(arr == maximum_filter(arr,footprint=np.ones((3,3))))
Run Example -
In [19]: arr Out[19]: array([[3, 4, 5, 2, 3], [3, 5, 1, 2, 7], [2, 2, 5, 6, 7]]) In [20]: arr*(arr == maximum_filter(arr,footprint=np.ones((3,3)))) Out[20]: array([[0, 0, 5, 0, 0], [0, 5, 0, 0, 7], [0, 0, 0, 0, 7]])
source share