gpt4 book ai didi

python - Numpy.cumsum 反向

转载 作者:太空狗 更新时间:2023-10-30 02:30:10 26 4
gpt4 key购买 nike

这是正向的 cumsum:

> import numpy as np
> np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
> np.cumsum(np.arange(10))
array([ 0, 1, 3, 6, 10, 15, 21, 28, 36, 45])

我想在相反的方向执行 cumsum,这会给我

array([45, 45, 44, 42, 39, 35, 30, 24, 17, 9])

最简单、最有效的方法是什么?

最佳答案

我能想到的最简单的产生你的结果是

import numpy as np
x = np.arange(10)
x[::-1].cumsum()[::-1]

给出

array([45, 45, 44, 42, 39, 35, 30, 24, 17,  9])

编辑:正如dg99 指出的,还有a post about the efficiency of reversing an array .因此,[::-1] 似乎是您可以获得的最好的。因此,x[::-1].cumsum()[::-1] 似乎也是执行反向 cumsum 的最有效方法。

第二次编辑:为了完整起见,如果你有一个多维数组,你可以通过以下方式沿着最里面的维度获得反向 cumsum:

x[...,::-1].cumsum(axis=-1)[...,::-1]

例如,

x = np.array(((range(10), range(10)), (range(10), range(10))))
print(x)

打印

array([[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]],

[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]])

 x[...,::-1].cumsum(axis=-1)[...,::-1]

返回

array([[[45, 45, 44, 42, 39, 35, 30, 24, 17,  9],
[45, 45, 44, 42, 39, 35, 30, 24, 17, 9]],

[[45, 45, 44, 42, 39, 35, 30, 24, 17, 9],
[45, 45, 44, 42, 39, 35, 30, 24, 17, 9]]])

关于python - Numpy.cumsum 反向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28617430/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com