Python:数组中所有行的索引,仅包含非零条目

时间:2017-04-25 02:01:38

标签: python arrays

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)。

2 个答案:

答案 0 :(得分:1)

您的方法应该稍微改变一下,如下所示:

np.where(np.all(A != 0, axis=1))[0].tolist()
Out[284]: [2, 4]

答案 1 :(得分:0)

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]