dask.array.ma.nonzero

dask.array.ma.nonzero

dask.array.ma.nonzero(self)[源代码]

此文档字符串是从 numpy.ma.core.nonzero 复制的。

Dask 版本可能存在一些不一致性。

返回未屏蔽且不为零的元素的索引。

返回一个数组的元组,每个维度一个数组,包含该维度中非零元素的索引。相应的非零值可以通过以下方式获得:

a[a.nonzero()]

要按元素而不是维度对索引进行分组,请改为使用:

np.transpose(a.nonzero())

这个结果总是一个二维数组,每一行对应一个非零元素。

参数
返回
tuple_of_arrays元组

非零元素的索引。

参见

numpy.nonzero

对 ndarray 进行操作的函数。

flatnonzero

返回输入数组展平版本中非零元素的索引。

numpy.ndarray.nonzero

等效的 ndarray 方法。

count_nonzero

计算输入数组中非零元素的数量。

示例

>>> import numpy as np  
>>> import numpy.ma as ma  
>>> x = ma.array(np.eye(3))  
>>> x  
masked_array(
  data=[[1., 0., 0.],
        [0., 1., 0.],
        [0., 0., 1.]],
  mask=False,
  fill_value=1e+20)
>>> x.nonzero()  
(array([0, 1, 2]), array([0, 1, 2]))

被遮罩的元素将被忽略。

>>> x[1, 1] = ma.masked  
>>> x  
masked_array(
  data=[[1.0, 0.0, 0.0],
        [0.0, --, 0.0],
        [0.0, 0.0, 1.0]],
  mask=[[False, False, False],
        [False,  True, False],
        [False, False, False]],
  fill_value=1e+20)
>>> x.nonzero()  
(array([0, 2]), array([0, 2]))

索引也可以按元素分组。

>>> np.transpose(x.nonzero())  
array([[0, 0],
       [2, 2]])

nonzero 的一个常见用途是找到数组中条件为 True 的索引。给定一个数组 a,条件 a > 3 是一个布尔数组,由于 False 被解释为 0,ma.nonzero(a > 3) 返回 a 中条件为真的索引。

>>> a = ma.array([[1,2,3],[4,5,6],[7,8,9]])  
>>> a > 3  
masked_array(
  data=[[False, False, False],
        [ True,  True,  True],
        [ True,  True,  True]],
  mask=False,
  fill_value=True)
>>> ma.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]))