Извините странное название, я не мог думать о подходящей формулировке.
Скажем, у меня есть массив вроде:
arr = [[0 1 1 1 1 1 1 1 0],
[0 0 1 1 1 1 1 0 0],
[0 0 0 1 1 1 0 0 0],
[0 0 0 0 1 0 0 0 0],
[0 0 0 0 0 0 0 0 0]]
Я ищу "травить" прочь 1
, которые касаются 0
s, что приведет к:
arr = [[0 0 1 1 1 1 1 0 0],
[0 0 0 1 1 1 0 0 0],
[0 0 0 0 1 0 0 0 0],
[0 0 0 0 0 0 0 0 0],
[0 0 0 0 0 0 0 0 0]] .
Я пробовал несколько вещей с подобными np.roll
, но кажется неэффективным (и имеет краевые эффекты). Есть ли хороший короткий способ сделать это?