Short-circuiting equivalent of np.any or np.all?
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
participants (6)
-
Allan Haldane
-
Hameer Abbasi
-
Joseph Fox-Rabinovitz
-
Marten van Kerkwijk
-
Nathan Goldbaum
-
Sebastian Berg