在使用python的numpy包进行矩阵运算时候,有时候需要获得矩阵中元素值不为0的下标,numpy包中的numpy.nonzero()
函数可以实现这一功能。
定义 import numpy as np
,m=np.array(...)
,即m是numpy数组(矩阵),np.nonzero(m)
返回m中值不为零的元素的下标,返回值是一个长度为m.ndim
(m的轴数)的元组。元组的每个元素都是一个整数数组,其值为非零元素的下标在对应轴上的值。
一维数组
对于一维数组m1,np.nonzero(m1)
所得到的是一个长度为1的元组,它表示m1[0]、m1[1]和m1[3]的值不为0。
>>> m1=np.array([3,6,0,9]) >>> np.nonzero(m1) (array([0, 1, 3]),) #形如(1,)的元组 |
多维数组(矩阵)
以二维数组为例,对于二维数组m2,np.nonzero(m2)
所得到的是一个长度m2.ndim()输出为2的元组。它的第0个元素是数组m2中值不为0的元素的第0轴的下标,第1个元素则是第1轴的下标。
>>> 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]))#array([0, 0, 1, 1])是axis=0轴上的元素,同理是axis=1轴上的元素。 |
返回结果表示:矩阵m2中的(0, 0)、(0, 1)、(1, 1)、(1, 2)元素不为0。