получить каждое значение с максимальным количеством в массиве NumPy - PullRequest
0 голосов
/ 15 октября 2018

Например, у меня есть следующий массив:

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

Мне нужен следующий вывод:

y = [3,6]

Итак, он похож на режим, но может возвращать более одного значенияесли несколько значений имеют одинаковое максимальное количество.Какой эффективный способ сделать это?Спасибо.

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Если 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.

0 голосов
/ 15 октября 2018

просто используйте np.unique с return_counts = True

u, c = np.unique(x, return_counts = True)
y = u[c == c.max()]
...