У меня проблема с 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, я хочу заполнить остальную часть строки единицами.
Есть ли эффективный способ вычислить это?
Большое спасибо.
Нико!