(51) numpy配列の非ゼロ要素を抽出

投稿者: | 2014年8月29日

11,327 views

この記事は最終更新から 1812日 が経過しています。

numpy配列から非ゼロ要素のみを抽出したい。

5行5列の配列を作成する。

>>> import numpy as np
>>> a = (np.random.rand(5,5) * 10).astype(np.int32)
>>> a
array([[9, 5, 3, 3, 5],
       [3, 7, 9, 3, 0],
       [4, 6, 6, 4, 2],
       [2, 0, 5, 8, 8],
       [9, 0, 9, 9, 9]], dtype=int32)

非ゼロの要素の行方向、列方向のインデックスを取得する。

>>> np.nonzero(a)
(array([0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4]),
 array([0, 1, 2, 3, 4, 0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 2, 3, 4, 0, 2, 3, 4]))

出力結果を見ると、(1,4),(3,1),(4,1)が除外されている。確かにそこには0が格納されている。

非ゼロの要素数をカウントする。

>>> np.nonzero(a)[0].size
22

非ゼロの要素の平均を算出する。

>>> a.sum().astype(np.float32) / np.nonzero(a)[0].size
5.8181818181818183

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です