Python Language numpy配列で発生をカウントする


数値の配列で値の出現を数える。これは動作します:

>>> import numpy as np
>>> a=np.array([0,3,4,3,5,4,7])
>>> print np.sum(a==3)
2

論理は、ブールステートメントが、要求された値のすべての出現箇所が1であり、その他すべてがゼロである配列を生成するということです。これらを合計すると、発生回数が決まります。これは、任意の形状またはdtypeの配列に対して機能します。

numpyで一意のすべての値の発生をカウントするために私が使用する2つのメソッドがあります。ユニークで豊富です。 Uniqueは多次元配列を自動的に平坦化しますが、bincountは正の整数のみを含む1d配列でのみ機能します。

>>> unique,counts=np.unique(a,return_counts=True)
>>> print unique,counts # counts[i] is equal to occurrences of unique[i] in a
[0 3 4 5 7] [1 2 2 1 1]
>>> bin_count=np.bincount(a)
>>> print bin_count # bin_count[i] is equal to occurrences of i in a
[1 0 0 2 2 1 0 1] 

データが配列が奇数の場合は、一般にnumpyメソッドを使用してデータを汎用メソッドに変換する方がはるかに高速です。