On Sun, Mar 10, 2024 at 9:14 AM Dom Grigonis <dom.grigo...@gmail.com> wrote:
> Much thanks! > > Another related question while I am at it. It says clip is supposed to be > faster than np.maximum(mp.minumum(arr, max), min). However: > > a = np.arange(100)%timeit a.clip(4, 20) # 8.48 µs%timeit > np.maximum(np.minimum(a, 20), 4) # 2.09 µs > > Is this expected? > Make sure that you're not benchmarking with very small arrays (2 us is on the order of function call overhead) and that the timing are reproducible. `clip` is more efficient: >>> %timeit np.clip(a, 4, 20) 70 µs ± 304 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each) >>> %timeit np.clip(a, 4, 20) 72.8 µs ± 161 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each) >>> %timeit np.maximum(np.minimum(a, 20), 4) 742 µs ± 8.45 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each) Ralf > > Regards, > dg > > > On 10 Mar 2024, at 09:59, Ralf Gommers <ralf.gomm...@gmail.com> wrote: > > > > On Sat, Mar 9, 2024 at 11:23 PM Dom Grigonis <dom.grigo...@gmail.com> > wrote: > >> Hello, >> >> Can't find answer to this anywhere. >> >> What I would like is to automatically clip the values if they breach the >> bounds. >> >> I have done a simple clipping, and overwritten __iadd__, __isub__, >> __setitem__, … >> >> But I am wandering if there is a specified way to do this. Or maybe at >> least a centralised place exists to do such thing? E.g. Only 1 method to >> override? >> > > That centralized method is `__array_wrap__`; a subclass that implements > `__array_wrap__` by applying `np.clip` and then returning self should do > this I think. > > Cheers, > Ralf > _______________________________________________ > 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: dom.grigo...@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: ralf.gomm...@googlemail.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