假设我有 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
