Предположим, у меня есть матрица 4x4, которая выглядит следующим образом:NumPy: заполните поля, окружающие 1 в массиве
[[0, 0, 0, 0]
[0, 0, 1, 0]
[0, 0, 0, 0]
[0, 0, 0, 0]]
Я хочу, чтобы написать функцию, которая принимает все 4 окружающие поля одного и превращает их в 1.
выше матрица станет:
[[0, 0, 1, 0]
[0, 1, 1, 1]
[0, 0, 1, 0]
[0, 0, 0, 0]]
Я знаю, что это возможно с помощью if-операторов, но я действительно хочу, чтобы оптимизировать свой код.
В матрице содержатся только 0 и 1. Если 1 находится на краю матрицы, то 1 не следует обертывать, т. Е. Если самое левое поле равно 1, самое правильное поле по-прежнему остается равным 0. Кроме того, я использую Python 3.5
Есть ли более математический или лаконичный способ сделать это?
Что делать, если есть '2'? Что, если соседнее поле уже «1»? Есть только один '1'? Может ли это быть на «краю»? Что тогда, shoud это обернуть? – zvone
Только что отредактировал исходное сообщение. Большое спасибо за ваш комментарий – Narusan
Итак, для пограничных элементов у нас не будет 4 соседей, но 2 или 3 соседа. Итак, мы будем заполнять только 1 в этих? – Divakar