例如,我有以下数组:
x = [1,2,3,3,4,5,6,6,7,8]
我需要以下输出:
y = [3,6]
因此,它类似于mode,但是如果多个值具有相同的最大计数,则可以返回多个值。什么是有效的方法?谢谢。
答案 0 :(得分:1)
只需将np.unique
与return_counts = True
一起使用
u, c = np.unique(x, return_counts = True)
y = u[c == c.max()]
答案 1 :(得分:1)
如果x
仅包含非负整数,并且如果max(x)
不太大,则可以使用numpy.bincount
:
In [230]: x = [1,2,3,3,4,5,6,6,7,8]
In [231]: counts = np.bincount(x)
In [232]: np.where(counts == counts.max())[0]
Out[232]: array([3, 6])
数组counts
的长度为max(x)+1
,因此,如果max(x)
很大,则可能不希望使用它。
此方法可能比使用numpy.unique
的速度快得多。