首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >查找NumPy数组中最常用的数字

查找NumPy数组中最常用的数字
EN

Stack Overflow用户
提问于 2011-06-06 20:51:40
回答 11查看 209.5K关注 0票数 158

假设我有以下NumPy数组:

代码语言:javascript
复制
a = np.array([1,2,3,1,2,1,1,1,3,2,2,1])

如何在这个数组中找到最频繁的数字?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2011-06-06 21:01:20

如果你的列表包含所有非负整数,你应该看看numpy.bincounts:

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

然后可能使用np.argmax:

代码语言:javascript
复制
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。或者,如果您只想在python中工作而不使用numpy,那么collections.Counter是处理这类数据的好方法。

代码语言:javascript
复制
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))
票数 224
EN

Stack Overflow用户

发布于 2015-02-26 15:29:49

您可以使用

代码语言:javascript
复制
values, counts = np.unique(a, return_counts=True)

ind = np.argmax(counts)
print(values[ind])  # prints the most frequent element

ind = np.argpartition(-counts, kth=10)[:10]
print(values[ind])  # prints the 10 most frequent elements

如果某个元素与另一个元素一样频繁,则此代码将只返回第一个元素。

票数 109
EN

Stack Overflow用户

发布于 2011-06-06 21:10:09

如果您愿意使用SciPy

代码语言:javascript
复制
>>> from scipy.stats import mode
>>> mode([1,2,3,1,2,1,1,1,3,2,2,1])
(array([ 1.]), array([ 6.]))
>>> most_frequent = mode([1,2,3,1,2,1,1,1,3,2,2,1])[0][0]
>>> most_frequent
1.0
票数 50
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6252280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档