What is the inverse of the numpy cumsum function?

前端 未结 4 1329
自闭症患者
自闭症患者 2020-12-10 01:58

If I have z = cumsum( [ 0, 1, 2, 6, 9 ] ), which gives me z = [ 0, 1, 3, 9, 18 ], how can I get back to the original array [ 0, 1, 2, 6, 9 ]<

4条回答
  •  青春惊慌失措
    2020-12-10 02:14

    You can use np.diff to compute elements 1...N which will take the difference between any two elements. This is the opposite of cumsum. The only difference is that diff will not return the first element, but the first element is the same in the original and cumsum output so we just re-use that value.

    orig = np.insert(np.diff(z), 0, z[0])
    

    Rather than insert, you could also use np.concatenate

    orig = np.concatenate((np.array(z[0]).reshape(1,), np.diff(z)))
    

    We could also just copy and replace elements 1...N

    orig = z.copy()
    orig[1:] = np.diff(z)
    

提交回复
热议问题