Как изменить значение в массиве Python на основе максимального окна? - PullRequest
0 голосов
/ 25 октября 2019

У меня есть двумерный массив:

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)
...