Извините странное название, я не мог думать о подходящей формулировке.
Скажем, у меня есть массив вроде:
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, но кажется неэффективным (и имеет краевые эффекты). Есть ли хороший короткий способ сделать это?