numpy.argwhere()
может быть идеальным рабочим API для этого.Кроме того, мы также должны удалить одноэлементное измерение, используя arr.squeeze()
.Ниже приведены два случая:
Если вы вводите массив 0-1
, то:
In [101]: a = np.array([0, 0, 1, 1, 0, 1, 1, 1, 0])
In [102]: np.argwhere(a).squeeze()
Out[102]: array([2, 3, 5, 6, 7])
С другой стороны, если у вас есть универсальный массив, то:
In [98]: np.random.seed(23)
In [99]: arr = np.random.randint(0, 5, 10)
In [100]: arr
Out[100]: array([3, 0, 1, 0, 4, 3, 2, 1, 3, 3])
In [106]: np.argwhere(arr == 1).squeeze()
Out[106]: array([2, 7])