我想找到模式并获得第一个numpyarray
例如
[1,2,2,3,3,4]
有两种模式(最常出现)2
、3
然而,在这种情况下,我想获得最左边的一个2
有一些例子可以通过numpy
或scipy
或staticts
获得模式
我的数组是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
函数状态
"如果最大值多次出现,则返回第一次出现的索引对应的索引。">