假设我有以下数组:
a = np.array([[1,2,3,4,5,6],
[7,8,9,10,11,12],
[3,5,6,7,8,9]])
我想要对第一行的前两个值求和:1+2 = 3
,然后是下两个值:3+4 = 7
,接着是5+6 = 11
,以此类推,对于每一行都要进行这样的操作。我的期望输出结果是:
array([[ 3, 7, 11],
[15, 19, 23],
[ 8, 13, 17]])
我有以下解决方案:
def sum_chunks(x, chunk_size):
rows, cols = x.shape
x = x.reshape(x.size / chunk_size, chunk_size)
return x.sum(axis=1).reshape(rows, cols/chunk_size)
但感觉这样做过于复杂,有没有更好的方法?也许有内置的方法吗?
np.sum([a[:,i::n] for i in xrange(n)], 0)
。你如何将其泛化? - nneonneon=2
时比你的sum_chunks
更快。对于更大的n
,可能会有其他更快的解决方案。我的注释解决方案只是一个示例,但我并不打算进行优化。 - nneonneo