python中获取数组(矩阵)值不为0的元素下标

在使用python的numpy包进行矩阵运算时候,有时候需要获得矩阵中元素值不为0的下标,numpy包中的numpy.nonzero()函数可以实现这一功能。

定义 import numpy as npm=np.array(...),即m是numpy数组(矩阵),np.nonzeros(m)返回m中值不为零的元素的下标,返回值是一个长度为m.ndim(m的轴数)的元组。元组的每个元素都是一个整数数组,其值为非零元素的下标在对应轴上的值。

一维数组

对于一维数组m1,np.nonzero(m1)所得到的是一个长度为1的元组,它表示m1[0]、m1[1]和m1[3]的值不为0。

1
2
3
>>> m1=np.array([3,6,0,9])
>>> np.nonzero(m1)
(array([0, 1, 3]),)

多维数组(矩阵)

以二维数组为例,对于二维数组m2,np.nonzero(m2)所得到的是一个长度为2的元组。它的第0个元素是数组m2中值不为0的元素的第0轴的下标,第1个元素则是第1轴的下标。

1
2
3
4
5
6
7
>>> m2=np.array([[1,2,0],[0,4,3],[0,0,0]])
>>> m2
array([[1, 2, 0],
[0, 4, 3],
[0, 0, 0]])
>>> np.nonzero(m2)
(array([0, 0, 1, 1]), array([0, 1, 1, 2]))

返回结果表示:矩阵m2中的(0, 0)、(0, 1)、(1, 1)、(1, 2)元素不为0。

写的还不错?那就来个红包吧!
0%