在numpy数组中获取具有最大计数的每个值

时间:2018-10-15 19:30:32

标签: numpy count max mode

例如,我有以下数组:

x = [1,2,3,3,4,5,6,6,7,8]

我需要以下输出:

y = [3,6]

因此,它类似于mode,但是如果多个值具有相同的最大计数,则可以返回多个值。什么是有效的方法?谢谢。

2 个答案:

答案 0 :(得分:1)

只需将np.uniquereturn_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的速度快得多。