<div dir="ltr">Would it be preferable to have to_begin='first' as an option under the existing kwarg to avoid overlapping?<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 26, 2016 at 3:35 PM, Peter Creasey <span dir="ltr"><<a href="mailto:p.e.creasey.00@googlemail.com" target="_blank">p.e.creasey.00@googlemail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">> Date: Wed, 26 Oct 2016 09:05:41 -0400<br>
> From: Matthew Harrigan <<a href="mailto:harrigan.matthew@gmail.com">harrigan.matthew@gmail.com</a>><br>
><br>
<span class="">> np.cumsum(np.diff(x, to_begin=x.take([0], axis=axis), axis=axis), axis=axis)<br>
><br>
> That's certainly not going to win any beauty contests.  The 1d case is<br>
> clean though:<br>
><br>
> np.cumsum(np.diff(x, to_begin=x[0]))<br>
><br>
> I'm not sure if this means the API should change, and if so how.  Higher<br>
> dimensional arrays seem to just have extra complexity.<br>
><br>
>><br>
</span><span class="">>> I like the proposal, though I suspect that making it general has<br>
>> obscured that the most common use-case for padding is to make the<br>
</span>>> inverse of np.cumsum (at least that?s what I frequently need), and now<br>
<span class="">>> in the multidimensional case you have the somewhat unwieldy:<br>
>><br>
>> >>> np.diff(a, axis=axis, to_begin=np.take(a, 0, axis=axis))<br>
>><br>
>> rather than<br>
>><br>
>> >>> np.diff(a, axis=axis, keep_left=True)<br>
>><br>
>> which of course could just be an option upon what you already have.<br>
>><br>
<br>
</span>So my suggestion was intended that you might want an additional<br>
keyword argument (keep_left=False) to make the inverse np.cumsum<br>
use-case easier, i.e. you would have something in your np.diff like:<br>
<br>
if keep_left:<br>
    if to_begin is None:<br>
        to_begin = np.take(a, [0], axis=axis)<br>
    else:<br>
        raise ValueError(‘np.diff(a, keep_left=False, to_begin=None)<br>
can be used with either keep_left or to_begin, but not both.’)<br>
<br>
Generally I try to avoid optional keyword argument overlap, but in<br>
this case it is probably justified.<br>
<div class="HOEnZb"><div class="h5"><br>
Peter<br>
______________________________<wbr>_________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org">NumPy-Discussion@scipy.org</a><br>
<a href="https://mail.scipy.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.scipy.org/<wbr>mailman/listinfo/numpy-<wbr>discussion</a><br>
</div></div></blockquote></div><br></div>