【发布时间】:2015-10-19 01:03:13
【问题描述】:
假设我有一个这样的数组
>>> a = np.arange(1,8).reshape((1,-1))
>>> a
array([[1, 2, 3, 4, 5, 6, 7]])
我想为a 中的每个项目创建一个“接下来的 4 个项目的总和”。也就是说,我的预期输出是
1, 2, 3, 4, 5, 6, 7, 8
1+2, 2+3, ...
1+2+3 2+3+4 ...
1+2+3+4 2+3+4+5 ...
即一个矩阵,包含
1, 2, 3, 4, 5, 0, 0, 0
3, 5, 7, 9, 11,0, 0, 0
6, 9, 12,15,18,0, 0, 0
10,14,18,21,26,0, 0, 0
由于无法对最后 3 项正确执行 cumsum 操作,我希望那里有一个 0。我知道怎么做一个cumsum。其实数组是
a[:4].cumsum().reshape((-1,1)); a[1:5].cumsum().reshape((-1,1))...
水平堆叠。但是,我不知道如何以有效的方式做到这一点。这样做的好的矢量化 numpy 方式是什么?我也对scipy 软件包持开放态度,只要它们在效率或可读性方面优于numpy。
【问题讨论】:
标签: python arrays numpy scipy cumsum