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 関数はありますか? または他の推奨事項はありますか?