In [134]: arr=np.array([[0, 1, 0, 0],
...: [1, 0, 0, 0],
...: [0, 0, 1, 0],
...: [0, 0, 0, 1],
...: [1, 0, 0, 0],
...: [1, 0, 0, 0],
...: [1, 0, 0, 0],
...: [0, 1, 0, 0],
...: [0, 1, 0, 0],
...: [0, 0, 1, 0],
...: [0, 0, 1, 0],
...: [0, 0, 0, 1],
...: [0, 0, 0, 1]], dtype=np.uint8)
Похоже, where
при транспонировании находит нужные индексы:
In [135]: np.where(arr.T)
Out[135]:
(array([0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3]),
array([ 1, 4, 5, 6, 0, 7, 8, 2, 9, 10, 3, 11, 12]))
In [136]: np.where(arr.T)[1]
Out[136]: array([ 1, 4, 5, 6, 0, 7, 8, 2, 9, 10, 3, 11, 12])