原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.nonzero.html
校对:(虚位以待)
numpy.
nonzero
(a)[source]返回非零元素的索引。
返回数组的元组,每个维度a一个,包含该维度中非零元素的索引。a中的值总是以行主,C风格顺序测试和返回。相应的非零值可以用下式获得:
a[nonzero(a)]
要按元素对索引进行分组,而不是维,请使用:
transpose(nonzero(a))
其结果始终是2-D数组,每个非零元素都有一行。
参数: | a:array_like
|
---|---|
返回: | tuple_of_arrays:tuple
|
也可以看看
flatnonzero
ndarray.nonzero
count_nonzero
例子
>>> 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]])
nonzero
的常见用法是找到数组的索引,其中条件为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]))
也可以调用布尔数组的nonzero
方法。
>>> (a > 3).nonzero()
(array([1, 1, 1, 2, 2, 2]), array([0, 1, 2, 0, 1, 2]))