Would it be useful to have a short-circuited version of the function that is not a ufunc?
- Joe On Thu, Apr 26, 2018 at 12:51 PM, Hameer Abbasi <einstein.edi...@gmail.com> wrote: > Hi Nathan, > > np.any and np.all call np.or.reduce and np.and.reduce respectively, and > unfortunately the underlying function (ufunc.reduce) has no way of > detecting that the value isn’t going to change anymore. It’s also used for > (for example) np.sum (np.add.reduce), np.prod (np.multiply.reduce), > np.min(np.minimum.reduce), np.max(np.maximum.reduce). > > You can find more information about this on the ufunc doc page > <https://docs.scipy.org/doc/numpy/reference/ufuncs.html>. I don’t think > it’s worth it to break this machinery for any and all, as it has numerous > other advantages (such as being able to override in duck arrays, etc) > > Best regards, > Hameer Abbasi > Sent from Astro <https://www.helloastro.com> for Mac > > On Apr 26, 2018 at 18:45, Nathan Goldbaum <nathan12...@gmail.com> wrote: > > > Hi all, > > I was surprised recently to discover that both np.any and np.all() do not > have a way to exit early: > > In [1]: import numpy as np > > In [2]: data = np.arange(1e6) > > In [3]: print(data[:10]) > [0. 1. 2. 3. 4. 5. 6. 7. 8. 9.] > > In [4]: %timeit np.any(data) > 724 us +- 42.4 us per loop (mean +- std. dev. of 7 runs, 1000 loops each) > > In [5]: data = np.zeros(int(1e6)) > > In [6]: %timeit np.any(data) > 732 us +- 52.9 us per loop (mean +- std. dev. of 7 runs, 1000 loops each) > > I don't see any discussions about this on the NumPy issue tracker but > perhaps I'm missing something. > > I'm curious if there's a way to get a fast early-terminating search in > NumPy? Perhaps there's another package I can depend on that does this? I > guess I could also write a bit of cython code that does this but so far > this project is pure python and I don't want to deal with the packaging > headache of getting wheels built and conda-forge packages set up on all > platforms. > > Thanks for your help! > > -Nathan > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@python.org > https://mail.python.org/mailman/listinfo/numpy-discussion > > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@python.org > https://mail.python.org/mailman/listinfo/numpy-discussion > >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion