例如,给定一个数组:
arr = np.array([1,2,3,2,3,7,2,3,4])
这里有 9
个元素。
我想要每次对 3
个元素求和:
[6, 12, 9]
有哪些NumPy API可以使用?
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.])
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])
bincount
会稍微快一些 ;) - mozway