The inverse of cumsum is actually a little more unweildy since you can't drop a dimension with take. This returns the original array (numerical caveats aside):
np.cumsum(np.diff(x, to_begin=x.take([0], axis=axis), axis=axis), axis=axis) That's certainly not going to win any beauty contests. The 1d case is clean though: np.cumsum(np.diff(x, to_begin=x[0])) I'm not sure if this means the API should change, and if so how. Higher dimensional arrays seem to just have extra complexity. On Tue, Oct 25, 2016 at 1:26 PM, Peter Creasey < p.e.creasey...@googlemail.com> wrote: > > Date: Mon, 24 Oct 2016 08:44:46 -0400 > > From: Matthew Harrigan <harrigan.matt...@gmail.com> > > > > I posted a pull request <https://github.com/numpy/numpy/pull/8206> which > > adds optional padding kwargs "to_begin" and "to_end" to diff. Those > > options are based on what's available in ediff1d. It closes this issue > > <https://github.com/numpy/numpy/issues/8132> > > I like the proposal, though I suspect that making it general has > obscured that the most common use-case for padding is to make the > inverse of np.cumsum (at least that’s what I frequently need), and now > in the multidimensional case you have the somewhat unwieldy: > > >>> np.diff(a, axis=axis, to_begin=np.take(a, 0, axis=axis)) > > rather than > > >>> np.diff(a, axis=axis, keep_left=True) > > which of course could just be an option upon what you already have. > > Best, > Peter > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > https://mail.scipy.org/mailman/listinfo/numpy-discussion >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org https://mail.scipy.org/mailman/listinfo/numpy-discussion