在np中的查找模式.数组1d,得到第一个



我想找到模式并获得第一个numpyarray

例如

[1,2,2,3,3,4]有两种模式(最常出现)23

然而,在这种情况下,我想获得最左边的一个2

有一些例子可以通过numpyscipystaticts获得模式

我的数组是numpy,所以如果我只能用numpy,它很简单…

然而,我怎么能做到这一点??

你看过collections.Counter了吗?

import numpy as np
import collections
x = np.array([1, 2, 3, 2, 4, 3])
c = collections.Counter(x)
largest_num, count = c.most_common(1)[0]

Counter.most_common的文档说明:

计数相等的元素按第一次遇到的顺序排序

如果您只想使用numpy,那么您可以根据scipy模式实现尝试以下方法

a = np.array([1,2,2,3,3,4])
# Unique values 
scores = set(np.ravel(a))
# Retrieve keys, counts
keys, counts = zip(*[(score, np.sum((a == score))) for score in scores])
# Maximum key
keys[np.argmax(counts)]
>>> 2

其中argmax函数状态

"如果最大值多次出现,则返回第一次出现的索引对应的索引。">