Python: Как заполнить массив построчно?

У меня проблема с numpy, которую я не могу решить. У меня есть 3D-массивы (x, y, z), заполненные 0 и 1. Например, один срез по оси z:

array([[1, 0, 1, 0, 1, 1, 0, 0],
       [0, 0, 1, 1, 0, 1, 1, 0],
       [1, 0, 1, 1, 0, 0, 0, 1],
       [0, 0, 0, 0, 0, 0, 0, 0],
       [1, 1, 1, 0, 1, 0, 0, 1],
       [1, 0, 0, 0, 0, 1, 0, 1],
       [0, 0, 0, 0, 1, 0, 0, 0],
       [0, 0, 1, 0, 1, 1, 0, 1]])

И мне нужен этот результат:

array([[1, 1, 1, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 1, 1, 0],
       [1, 1, 1, 1, 1, 1, 1, 1],
       [0, 0, 0, 0, 0, 0, 0, 0],
       [1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1],
       [0, 0, 0, 0, 1, 0, 0, 0],
       [0, 0, 1, 1, 1, 1, 1, 1]])

То есть то, что я хочу сделать для каждого среза z, - это сканировать построчно справа налево и слева направо ( ось x) и в первый раз, когда у меня есть 1, я хочу заполнить остальную часть строки единицами.

Есть ли эффективный способ вычислить это?

Большое спасибо.

Нико!

7
задан Nico 8 July 2011 в 15:26
поделиться