У меня есть двумерный массив:
arr = [[ 7 5 4 6 9]
[ 2 -5 7 5 5]
[ 4 5 4 8 -1]
[ 9 0 4 9 9]
[ -2 5 6 7 -3]]
Я хочу изменить отрицательные и нулевые значения на основе максимального значения в 3 * 3 движущемся окне. Я могу написать ниже код, который может изменить все значения, но я хочу, чтобы значения больше нуля без изменений в массиве.
import numpy as np
from scipy import ndimage
def change_v(x):
return np.max(x)
# determine element change
temp = np.zeros((5, 5))
out= ndimage.generic_filter(arr, change_v, size=3, output=temp )
print (out)