从NumPy数组中对每N个元素求和

6
例如,给定一个数组:
arr = np.array([1,2,3,2,3,7,2,3,4])

这里有 9 个元素。

我想要每次对 3 个元素求和:

[6, 12, 9]

有哪些NumPy API可以使用?

2个回答

6
如果你的arr可以分成3个一组,即长度为3*k,那么:
arr.reshape(-1,3).sum(axis=-1)
# array([ 6, 12,  9])

通常情况下,bincounts

np.bincount(np.arange(len(arr))//3, arr)
# array([ 6., 12.,  9.])

使用通用情况,bincount 会稍微快一些 ;) - mozway

2
如果arr的长度不是3的倍数,考虑使用np.add.reduceat
>>> arr = np.array([1,2,3,2,3,7,2,3,4,5])
>>> np.add.reduceat(arr, np.arange(0, arr.size, 3))
array([ 6, 12,  9,  5])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接