在NumPy中计算一个序列的经验分布?

问题描述 投票:0回答:1

假设 A 是一个(NumPy)长度-。M 我想计算一个长度为0,1,......的整数数组。N-1,我想计算一个长度为 N, c,这样 c[i] = sum(A == i). A for-的解决方案是显而易见的,但有没有更快的解决方案?

我也知道 np.histogram 但对于这个问题来说,这听起来有点矫枉过正。

python numpy
1个回答
0
投票

我想我找到了一个解决方案。

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)
推荐问答
热门问答
最新问答