import numpy as np
import scipy.ndimage as ni
i = np.array([0,0,1,2,2])
d = np.array([0,1,2,3,4])
n_indices = i.max() + 1
print ni.sum(d, i, np.arange(n_indices))
import numpy as np
i = np.array([0,0,1,2,2])
d = np.array([0,1,2,3,4])
i_max = i.max()
c = np.empty(i_max+1)
for j in range(i_max+1):
c[j] = d[i==j].sum()
print c
[1. 2. 7.]
如果我正确理解了这个问题,有一个快速的函数(只要数据数组是1d)
bincount返回所有整数范围(max(i))的数组,即使某些计数为零
朱的评论是最有效的解决方案。以下是工作代码:
对于大型数组,此解决方案应该更有效(它迭代可能的索引值,而不是
i
的单个项):相关问题 更多 >
编程相关推荐