У меня есть 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 мог бы иметь некоторую встроенную функцию, чтобы сделать это. Или если существует прием для нахождения этого эффективно без цикличного выполнения.
Аккуратное решение, что только использование 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])
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 сортировать частоту от самого большого до самого маленького.