1.numpy.nonzero(condition),返回参数condition(为数组或者矩阵)中非0元素的索引所形成的ndarray数组,同时也可以返回condition中布尔值为True的值索引,其中,数值0为False,其余的都为True。
1 >>>b=np.mat(np.arange(10)).T 2 >>>b 3 matrix([[0], 4 [1], 5 [2], 6 [3], 7 [4], 8 [5], 9 [6], 10 [7], 11 [8], 12 [9]]) 13 >>>np.nonzero(b>2) 14 (array([3, 4, 5, 6, 7, 8, 9], dtype=int64), 15 array([0, 0, 0, 0, 0, 0, 0], dtype=int64)) 16 >>>np.nonzero((b.A>2)*(b.A<8)) 17 (array([3, 4, 5, 6, 7], dtype=int64), array([0, 0, 0, 0, 0], dtype=int64))
1 >>> x = np.eye(3) 2 >>> x 3 array([[ 1., 0., 0.], 4 [ 0., 1., 0.], 5 [ 0., 0., 1.]]) 6 >>> np.nonzero(x) 7 (array([0, 1, 2]), array([0, 1, 2])) 8 >>> 9 >>> x[np.nonzero(x)] 10 array([ 1., 1., 1.]) 11 >>> np.transpose(np.nonzero(x)) 12 array([[0, 0], 13 [1, 1], 14 [2, 2]]
其中np.nonzero((b.A>2)*(b.A<8))是返回数组b的值在范围2<b<8的索引。并且必须要求参数时数组,如果是矩阵会报错。
A common use for nonzero is to find the indices of an array, where a condition is True. Given an array a, the condition a > 3 is a boolean array and since False is interpreted as 0, np.nonzero(a > 3) yields the indices of the a where the condition is true.这个功能和numpy.where()的一种用法一样。
>>> a = np.array([[1,2,3],[4,5,6],[7,8,9]]) >>> a > 3 array([[False, False, False], [ True, True, True], [ True, True, True]], dtype=bool) >>> np.nonzero(a > 3) (array([1, 1, 1, 2, 2, 2]), array([0, 1, 2, 0, 1, 2]))
2numpy.multiply()