假设 A
是一个(NumPy)长度-。M
我想计算一个长度为0,1,......的整数数组。N-1
,我想计算一个长度为 N
, c
,这样 c[i] = sum(A == i)
. A for
-的解决方案是显而易见的,但有没有更快的解决方案?
我也知道 np.histogram
但对于这个问题来说,这听起来有点矫枉过正。
我想我找到了一个解决方案。
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)