Чтобы проиллюстрировать мою точку зрения, давайте возьмем этот массив 2d numpy:
array([[1, 1, 5, 1, 1, 5, 4, 1],
[1, 5, 6, 1, 5, 4, 1, 1],
[5, 1, 5, 6, 1, 1, 1, 1]])
Я хочу заменить значение 1 другим значением, скажем 0, но только по краям. Это желаемый результат:
array([[0, 0, 5, 1, 1, 5, 4, 0],
[0, 5, 6, 1, 5, 4, 0, 0],
[5, 1, 5, 6, 0, 0, 0, 0]])
Обратите внимание, что единицы, окруженные другими значениями, не изменяются.
Я мог бы реализовать это, перебирая все строки и элементы, но я чувствую, что было бы очень неэффективно. Обычно я бы использовал функцию np.where
для замены определенного c значения, но я не думаю, что вы можете добавить позиционные условия?