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

Reply via email to