Skip to main content
 首页 » 编程设计

python之如何在 m 组中对大小为 (m*n,) 的 numpy 数组求和

2025年05月04日15Leo_wl

假设我有 a,其中 a.shape 是 (m*n,),我该如何创建一个包含m 每组 n 元素的总和高效?

我想到的最好的是:

a.reshape((m, n)).sum(axis=1) 

但这会创建一个额外的新数组。

请您参考如下方法:

我认为使用 reshape 然后对行求和没有任何问题,我想不出更快的方法。根据manual , reshape 应该(如果可能)返回原始数组的 View ,因此不会复制大量数据。创建 View 时,numpy 只会创建一个具有不同步幅和形状的新标题,并带有指向原始数组数据的指针。这应该花费恒定的时间和内存,与数组大小无关。

In [23]: x = np.arange(12) 
 
In [24]: y = x.reshape((3, 4)) 
 
In [25]: y 
Out[25]:  
array([[ 0,  1,  2,  3], 
       [ 4,  5,  6,  7], 
       [ 8,  9, 10, 11]]) 
 
In [26]: y.base is x  # check if it is a view 
Out[26]: True