python nonzero()
返回非零元素的索引值。返回的是元组,元组的维数和参数的维数相同。
from numpy import * a=array([1,2,3]) b=array([[1],[2],[2]]) c=array([[[1,0],[1,2]], [[0,1],[0,2]], [[0, 0], [0, 2]]]) print(nonzero(a)) print(nonzero(b)) print(nonzero(c))
输出:
(array([0, 1, 2], dtype=int64),) (array([0, 1, 2], dtype=int64), array([0, 0, 0], dtype=int64)) (array([0, 0, 0, 1, 1, 2], dtype=int64), array([0, 1, 1, 0, 1, 1], dtype=int64), array([0, 0, 1, 1, 1, 1], dtype=int64))
实用举例:
from numpy import * dataSet=mat(eye(4)) print('dataSet:\n',dataSet) value=0.5 featureIndex=1 print(dataSet[:,featureIndex]>value) a=nonzero(dataSet[:,featureIndex]>value) print('a:',a) print('a[0]:',a[0]) print('dataset[a[0],:]:',dataSet[a[0],:]) mat0=dataSet[nonzero(dataSet[:,featureIndex]>value)[0],:][0] print('mat0:',mat0)
输出:
dataSet: [[1. 0. 0. 0.] [0. 1. 0. 0.] [0. 0. 1. 0.] [0. 0. 0. 1.]] [[False] [ True] [False] [False]] a: (array([1], dtype=int64), array([0], dtype=int64)) a[0]: [1] dataset[a[0],:]: [[0. 1. 0. 0.]] mat0: [[0. 1. 0. 0.]]