numpy nonzero的用法

来源:互联网 发布:淘宝退款可以申请几次 编辑:程序博客网 时间:2024/06/11 09:54

出处:http://blog.csdn.net/qq_18433441/article/details/54925470

numpy.nonzero(a): 返回的是a中非0元素的索引的元组,经常可以用a[nonzero(a)]得到a中非0元素

>>> x = np.eye(3)>>> xarray([[ 1.,  0.,  0.],       [ 0.,  1.,  0.],       [ 0.,  0.,  1.]])>>> np.nonzero(x)(array([0, 1, 2]), array([0, 1, 2]))
上面例子说明a数组非0元素的下标为(0,0) (1,1) (2,2)


>>> x[np.nonzero(x)]array([ 1.,  1.,  1.])>>> np.transpose(np.nonzero(x)) #元组化为数组,并转置array([[0, 0],       [1, 1],       [2, 2]])
nonzeros也经常和大于号,小于号,不等号一起用:

>>> a = np.array([[1,2,3],[4,5,6],[7,8,9]])>>> a > 3array([[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]))
也可以这样写

>>> (a > 3).nonzero()(array([1, 1, 1, 2, 2, 2]), array([0, 1, 2, 0, 1, 2]))




nonzero的帮助文档解释如下:



help(np.nonzero)
Help on function nonzero in module numpy.core.fromnumeric:


nonzero(a)
    Return the indices of the elements that are non-zero.
    
    Returns a tuple of arrays, one for each dimension of `a`,
    containing the indices of the non-zero elements in that
    dimension. The values in `a` are always tested and returned in
    row-major, C-style order. The corresponding non-zero
    values can be obtained with::
    
        a[nonzero(a)]
    
    To group the indices by element, rather than dimension, use::
    
        transpose(nonzero(a))
    
    The result of this is always a 2-D array, with a row for
    each non-zero element.
    
    Parameters
    ----------
    a : array_like
        Input array.
    
    Returns
    -------
    tuple_of_arrays : tuple
        Indices of elements that are non-zero.
    
    See Also
    --------
    flatnonzero :
        Return indices that are non-zero in the flattened version of the input
        array.
    ndarray.nonzero :
        Equivalent ndarray method.
    count_nonzero :
        Counts the number of non-zero elements in the input array.
    
    Examples
    --------
x = np.eye(3)
x
    array([[ 1.,  0.,  0.],
           [ 0.,  1.,  0.],
           [ 0.,  0.,  1.]])
np.nonzero(x)
    (array([0, 1, 2]), array([0, 1, 2]))
    
x[np.nonzero(x)]
    array([ 1.,  1.,  1.])
np.transpose(np.nonzero(x))
    array([[0, 0],
           [1, 1],
           [2, 2]])
    
    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.
    
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]))
    
    The ``nonzero`` method of the boolean array can also be called.
    
(a > 3).nonzero()
    (array([1, 1, 1, 2, 2, 2]), array([0, 1, 2, 0, 1, 2]))
原创粉丝点击