Python中Numpy库的nonzero()函数使用

翻阅Python数据处理入门书籍,其中介绍到了Numpy库的nonzero()函数,平台:Ipython

例码如下:

import numpy as np
x = np.array([[1, 2], [np.nan, 3], [np.nan, np.nan]])
y = x.nonzero()
print(y)

输出结果如下:

(array([0, 0, 1, 1, 2, 2], dtype = int32), array([0, 1, 0, 1, 0, 1], dtype = int32))

在Ipython中 ? np.nonzero()  得到函数的帮助文档:

Signature:np.nonzero(a)
Docstring:
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.

大概就是说,使用nonzero()函数会返回一个数组,该元组中包含了使用函数时传参数组中非零元素的下标。

对于一维数组而言很简单,就是很简单地返回该一维数组中非零元素地下标即可。

对于二维数组,使用该函数后则会返回一个二维的下标数组,比如上面的例码,(array([0, 0, 1, 1, 2, 2], dtype = int32), array([0, 1, 0, 1, 0, 1], dtype = int32)),前半部分表示的是行,后半部分表示的是列,将两者组合即可分别得出非零元素的下标即:(0,0)(0,1)(1,0)(1,1)(2,0)(2,1)。



猜你喜欢

转载自blog.csdn.net/qq_37898375/article/details/80300726