我正在寻找accumarray
numpy 中 MATLAB 的快速解决方案。accumarray
累加数组中属于同一索引的元素。一个例子:
a = np.arange(1,11)
# array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
accmap = np.array([0,1,0,0,0,1,1,2,2,1])
结果应该是
array([13, 25, 17])
到目前为止我所做的:
我已经尝试过这里的配方accum
中的功能,它工作正常但速度很慢。
accmap = np.repeat(np.arange(1000), 20)
a = np.random.randn(accmap.size)
%timeit accum(accmap, a, np.sum)
# 1 loops, best of 3: 293 ms per loop
然后我尝试使用这里的解决方案,它应该工作得更快,但它不能正常工作:
accum_np(accmap, a)
# array([ 1., 2., 12., 13., 17., 10.])
是否有一个内置的 numpy 函数可以像这样进行累积?或者有什么其他推荐吗?