np.nonzero
関数は、要素が0以外のインデックスを取得するシンプルな関数です。本記事では、np.nonzero
の使い方を解説します。
np.nonzero
np.nonzero
とnp.ndarray.nonzero
の2つのタイプがあるので両方記載しておきますが、使い方はほとんど同じです。まずは、APIドキュメントからみていきましょう。
numpy.nonzero(a)
params:
パラメータ名 |
型 |
概要 |
a |
array_like 配列に相当するもの |
要素の抽出を行いたい配列を指定します。 |
returns:
非ゼロ要素のあるインデックスを各軸ごとに1次元配列にして返します。
配列(ndarray)のタプル(tuple)の形で返されます。
numpy.ndarray.nonzero()
returns:
非ゼロ要素のあるインデックスを各軸ごとに1次元配列にして返します。
配列(ndarray)のタプル(tuple)の形で返されます。
np.nonzero
は配列を引数にとります。np.ndarray.nonzero
はndarrayのメソッドとして使えます。
インデックスを返してくれるので、うまく使えば非ゼロの必要な要素だけを抽出することができます。使い方を実際のコードでみていきましょう。
np.where、np.argwhereとの比較
この操作はnp.where(x!=0)
で全く同じことができます。np.where
関数については、以下のリンクに詳しい解説があるので参照してみてください。
条件を満たす要素のインデックスを取得するNumPyのwhereの使い方 /features/numpy-where.html
np.where
では、3項演算子も使用できます。例えば、次のように使用することが出来ます。
np.argwhere
はインデックスの転置を返します。つまり、np.argwhere(a != 0)
はnp.transpose(np.nonzero(a))
と同義です。
参考