В массиве numpy как найти индексы для всех строк, в которых есть только ненулевые записи . Например в массиве:

A = np.array([[ 1,  0,  5],
              [25,  2,  0],
              [ 7,  8,  9],
              [ 0,  0,  4],
              [11, 14, 15]])

Я хотел бы иметь [2,4] в качестве вывода, так как строки 2 и 4 являются единственными строками, где все записи отличны от нуля.

В настоящее время я использую

B = A[np.all(A != 0, axis=1)]

Получить массив, где все строки с хотя бы одним нулем были отброшены. Но мне нужно найти индексы (т.е. 2 и 4).

0
Commoner 25 Апр 2017 в 05:01

2 ответа

Лучший ответ

Ваш метод должен работать с небольшим изменением, как показано ниже:

np.where(np.all(A != 0, axis=1))[0].tolist()
Out[284]: [2, 4]
1
Allen 25 Апр 2017 в 03:02
In [1]: A = np.array([[ 1,  0,  5],
                      [25,  2,  0],
                      [ 7,  8,  9],
                      [ 0,  0,  4],
                      [11, 14, 15]])

In [2]: Indx1 = np.all(A != 0, axis=1) 
        print Indx1
Out[2]: Indx1 = [False False  True False  True] 

In [3]: Indx2 = np.where(Indx1==True)
        print Indx2
Out[3]: (array([2, 4]),)

In [4]: Indx = A[Indx2[0]]
        print Indx
Out[4]: [2 4]
0
Commoner 25 Апр 2017 в 02:18
43600379