Самый эффективный способ найти режим в массиве numpy

У меня есть 2D массив, содержащий целые числа (оба положительные или отрицательные). Каждая строка представляет значения со временем для конкретного пространственного сайта, тогда как каждый столбец представляет значения для различных пространственных сайтов в течение данного времени.

Таким образом, если массив похож:

1 3 4 2 2 7
5 2 2 1 4 1
3 3 2 2 1 1

Результат должен быть

1 3 2 2 2 1

Обратите внимание, что, когда существует несколько значений для режима, любой (выбранный случайным образом) может быть установлен как режим.

Я могу выполнить итерации по режиму открытия столбцов по одному, но я надеялся, что numpy мог бы иметь некоторую встроенную функцию, чтобы сделать это. Или если существует прием для нахождения этого эффективно без цикличного выполнения.

57
задан 2 May 2013 в 09:20

2 ответа

Аккуратное решение, что только использование numpy (не scipy, ни Counter класс):

A = np.array([[1,3,4,2,2,7], [5,2,2,1,4,1], [3,3,2,2,1,1]])

np.apply_along_axis(lambda x: np.bincount(x).argmax(), axis=0, arr=A)

массив ([1, 3, 2, 2, 1, 1])

0
ответ дан 1 November 2019 в 16:21
from collections import Counter

n = int(input())
data = sorted([int(i) for i in input().split()])

sorted(sorted(Counter(data).items()), key = lambda x: x[1], reverse = True)[0][0]

print(Mean)

Counter(data) количества частота и возвраты defaultdict. sorted(Counter(data).items()) виды с помощью ключей, не частоты. Наконец, потребность к отсортированному частота с помощью другого отсортированного с key = lambda x: x[1]. Реверс говорит Python сортировать частоту от самого большого до самого маленького.

0
ответ дан 1 November 2019 в 16:21

Другие вопросы по тегам:

Похожие вопросы: