12,037 views
この記事は最終更新から 2426日 が経過しています。
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
アクセス数(直近7日): ※試験運用中、BOT除外簡易実装済2026-06-10: 0回 2026-06-09: 0回 2026-06-08: 0回 2026-06-07: 1回 2026-06-06: 0回 2026-06-05: 0回 2026-06-04: 2回