您可以使用np.add.reduceat
作为解决这个问题的一般方法。即使范围的长度不一样,这也有效。
对切片求和0:25
, 25:50
and 50:75
沿轴 0,传入索引[0, 25, 50]
:
np.add.reduceat(a, [0, 25, 50], axis=0)
此方法还可用于对非连续范围求和。例如,对切片求和0:25
, 37:47
and 51:75
, write:
np.add.reduceat(a, [0,25, 37,47, 51], axis=0)[::2]
求和范围的另一种方法samelength 是重塑数组,然后沿轴求和。与上面第一个示例等效的是:
a.reshape(3, a.shape[0]//3, a.shape[1], a.shape[2]).sum(axis=1)