On Fri, Aug 18, 2023 at 4:59 AM Ronald van Elburg <
r.a.j.van.elb...@hetnet.nl> wrote:

> I was trying to get a feel for how often the work around occurs. I found
> three clear examples in Scipy and one unclear case. One case in holoviews.
> Two in numpy. One from soundappraisal's code base.
>

See also my comment from back in 2020:
https://github.com/numpy/numpy/pull/14542#issuecomment-586494608

Anyone interested in this enhancement is encouraged to review the
discussion in that pull request (https://github.com/numpy/numpy/pull/14542),
and an earlier issue from 2015: https://github.com/numpy/numpy/issues/6044

Warren



> Next to prepending to the output, I also see prepending to the input as a
> workaround.
>
> Some examples of workarounds:
>
> scipy: (prepending to the output)
>
>     scipy/scipy/sparse/construct.py:
>
>     '''Python
>     row_offsets = np.append(0, np.cumsum(brow_lengths))
>     col_offsets = np.append(0, np.cumsum(bcol_lengths))
>     '''
>
>     scipy/scipy/sparse/dia.py:
>
>     '''Python
>     indptr = np.zeros(num_cols + 1, dtype=idx_dtype)
>     indptr[1:offset_len+1] = np.cumsum(mask.sum(axis=0))
>     '''
>
>     scipy/scipy/sparse/csgraph/_tools.pyx:
>
>     '''Python
>     indptr = np.zeros(N + 1, dtype=ITYPE)
>     indptr[1:] = mask.sum(1).cumsum()
>     '''
>
>     Not sure whether this is also an example:
>
>     scipy/scipy/stats/_hypotests_pythran.py
>     '''Python
>         # Now fill in the values. We cannot use cumsum, unfortunately.
>         val = 0.0 if minj == 0 else 1.0
>         for jj in range(maxj - minj):
>             j = jj + minj
>             val = (A[jj + minj - lastminj] * i + val * j) / (i + j)
>             A[jj] = val
>     '''
>
> holoviews: (prepending to the input)
>
>     '''Python
>     # We add a zero in the begging for the cumulative sum
>     points = np.zeros((areas_in_radians.shape[0] + 1))
>     points[1:] = areas_in_radians
>     points = points.cumsum()
>     '''
>
>
> numpy (prepending to the input):
>
>     numpy/numpy/lib/_iotools.py :
>
>     '''Python
>     idx = np.cumsum([0] + list(delimiter))
>     '''
>
>     numpy/numpy/lib/histograms.py
>
>     '''Python
>     cw = np.concatenate((zero, sw.cumsum()))
>     '''
>
>
>
> soundappraisal own code: (prepending to the output)
>
>     '''Python
>     def get_cumulativepixelareas(whiteboard):
>         whiteboard['cumulativepixelareas'] = \
>                 np.concatenate((np.array([0, ]),
> np.cumsum(whiteboard['pixelareas'])))
>         return True
>     '''
> _______________________________________________
> NumPy-Discussion mailing list -- numpy-discussion@python.org
> To unsubscribe send an email to numpy-discussion-le...@python.org
> https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
> Member address: warren.weckes...@gmail.com
>
_______________________________________________
NumPy-Discussion mailing list -- numpy-discussion@python.org
To unsubscribe send an email to numpy-discussion-le...@python.org
https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
Member address: arch...@mail-archive.com

Reply via email to