Quelqu'un peut-il recommander un moyen de faire une somme cumulative inversée sur un tableau numpy?
Lorsque la "somme cumulée inversée" est définie comme ci-dessous (je salue toute correction du nom de cette procédure):
si
x = np.array([0,1,2,3,4])
puis
np.cumsum(x)
donne
array([0,1,3,6,10])
Cependant, je voudrais obtenir
array([10,10,9,7,4]
Quelqu'un peut-il suggérer une façon de procéder?
Cela le fait:
np.cumsum(x[::-1])[::-1]
Vous pouvez également utiliser .flipud()
, ce qui équivaut à [::-1]
https://docs.scipy.org/doc/numpy/reference/generated/numpy.flipud .html
In [0]: x = np.array([0,1,2,3,4])
In [1]: np.flipud(np.flipud(x).cumsum())
Out[1]: array([10, 10, 9, 7, 4]
.flip()
est nouveau depuis NumPy 1.12 et combine les .flipud()
et .fliplr()
en une seule API. https://docs.scipy.org/doc/numpy/reference/generated/numpy.flip.html
C'est équivalent et a moins d'appels de fonction:
np.flip(np.flip(x, 0).cumsum(), 0)