numpy.ma.MaskedArray.nonzero#
方法
- ma.MaskedArray.nonzero()[原始碼]#
傳回非遮罩且非零元素的索引。
傳回陣列的元組,每個維度一個,其中包含該維度中非零元素的索引。對應的非零值可以使用以下方式取得
a[a.nonzero()]
若要依元素而非維度對索引進行分組,請改用
np.transpose(a.nonzero())
此結果永遠是二維陣列,每個非零元素都有一列。
- 參數:
- 無
- 傳回:
- tuple_of_arraystuple
非零元素的索引。
參見
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 中條件為 true 的索引。>>> 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]))