1. ホーム
  2. python

[解決済み] NumPyの配列の中で最も頻度の高い数字を探す

2022-04-25 07:15:16

質問

以下のようなNumPyの配列があるとします。

a = np.array([1,2,3,1,2,1,1,1,3,2,2,1])

この配列の中で最も頻度の高い数字を見つけるにはどうしたらよいでしょうか?

どのように解決するのですか?

もし、リストがすべて非負のint型であるなら、numpy.bincountsを見てみてください。

http://docs.scipy.org/doc/numpy/reference/generated/numpy.bincount.html

で、おそらくnp.argmaxを使用します。

a = np.array([1,2,3,1,2,1,1,1,3,2,2,1])
counts = np.bincount(a)
print(np.argmax(counts))

より複雑なリスト (負数や整数でない値を含む可能性がある) には np.histogram と同じような方法で。あるいは、numpyを使わずにpythonで作業したいだけなら。 collections.Counter は、この種のデータを処理する良い方法です。

from collections import Counter
a = [1,2,3,1,2,1,1,1,3,2,2,1]
b = Counter(a)
print(b.most_common(1))