當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python numpy ma.nonzero用法及代碼示例


本文簡要介紹 python 語言中 numpy.ma.nonzero 的用法。

用法:

ma.nonzero(self) = <numpy.ma.core._frommethod object>

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

返回一個數組元組,每個維度一個,包含該維度中非零元素的索引。可以通過以下方式獲得相應的非零值:

a[a.nonzero()]

要按元素而不是維度對索引進行分組,請改用:

np.transpose(a.nonzero())

結果總是一個二維數組,每個非零元素都有一行。

參數

None

返回

tuple_of_arrays 元組

非零元素的索引。

例子

>>> 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]))

相關用法


注:本文由純淨天空篩選整理自numpy.org大神的英文原創作品 numpy.ma.nonzero。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。