NumPy参考 >数组对象 >Masked arrays >Constants of the numpy.ma module > numpy.ma.MaskedArray.nonzero
方法
MaskedArray.
nonzero
(自我)[来源] ¶返回不为零的未屏蔽元素的索引。
返回一个数组元组,每个维度一个,包含该维度中非零元素的索引。相应的非零值可通过以下方法获得:
a[a.nonzero()]
要将索引按元素而不是维度分组,请改用:
np.transpose(a.nonzero())
其结果始终是2d数组,每个非零元素都有一行。
非零元素的索引。
也可以看看
numpy.nonzero
在ndarrays上运行的函数。
flatnonzero
在输入数组的展平版本中返回非零的索引。
numpy.ndarray.nonzero
等效ndarray方法。
count_nonzero
计算输入数组中非零元素的数量。
例子
>>> 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)得出条件为true时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]))