Рассчитать эмпирическое распределение последовательности в NumPy? - PullRequest
0 голосов
/ 26 мая 2020

Предположим, A - это (NumPy) length- M массив целых чисел в 0, 1, ..., N-1, я хотел бы вычислить массив длиной N, c, такое что c[i] = sum(A == i). Решение, основанное на for, очевидно, но есть ли более быстрое решение?

Я также знаю np.histogram, но это звучит как перебор для этой проблемы.

1 Ответ

0 голосов
/ 26 мая 2020

Думаю, я нашел решение.

N = 10 # just an example
M = 10000
A = np.random.randint(0, N, size=M)

# for-based solution
c1 = [sum(A == i) for i in range(N)]

# using numpy unique

c2 = np.zeros(N, dtype=int)
val, count = np.unique(A, return_counts=True)
c2[val] = count


assert all(c2 == c1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...