ndarrayの条件を満たす要素の数を数える方法

ndarrayにおいて、与えられた条件を満たしている要素数を数える方法について説明します。forループやif文を使わず、比較演算子や関数の組み合わせで実現できます。

例として、10要素の乱数の入った配列を作ります。

>>> a = np.random.rand(10)
>>> a
array([0.54358044, 0.38524248, 0.24264256, 0.2426617 , 0.60402979, 0.21981407, 0.31785058, 0.28379446, 0.61343865, 0.94650637])

配列aの中で0.5を超える要素数を数えるにはどうプログラムを記述すれば良いでしょうか。

配列aを比較演算子で0.5と比較すると、下記のような0.5を超えている箇所がTrueでそれ以外がFalseのブール型配列が生成されます。

>>> a > 0.5
array([ True, False, False, False, True, False, False, False, True, True])

ndarrayには合計値を求めるsumメソッドが用意されています。今回、これを使用する方法を紹介します。

sumメソッドは、ブール型配列の場合にはTrueが1とカウントされる仕様となっていますので、上記のブール型配列にsumメソッドを使えば、条件を満たす要素数を数えることができます。

プログラムの記述は下記のようになります。

>>> (a > 0.5).sum()
4
関連項目
関数ndarray.sumの使い方の例