[Numpy-discussion] argmax() indexes to value

Elliot Hallmark Permafacture at gmail.com
Thu Oct 31 03:44:29 EDT 2019


Depends on how big your array is.  Numpy C code is 150x+ faster than python
overhead. Fancy indexing can be expensive in my experience.  Without trying
I'd guess arr[:, argmax(arr, axis=1)] does what you want, but even if it
is, try profiling the two and see.  I highly doubt such would be even 1% of
your run time, but it depends on what your doing.  Part of python with
numpy is slightly not caring about big O because trying to be clever is
rarely worth it in my experience.

On Thu, Oct 31, 2019 at 12:35 AM Daniele Nicolodi <daniele at grinta.net>
wrote:

> On 30/10/2019 22:42, Elliot Hallmark wrote:
> > I wouldn't be surprised at all if calling max in addition to argmax
> > wasn't as fast or faster than indexing the array using argmax.
> > Regardless, just use that then profile when you're done with the
> > whole thing and see if there's any gains to be made. Very likely not
> here.
>
> Hi Elliot,
>
> how do you arrive at this conclusion? np.argmax() and np.max() are O(N)
> while indexing is O(1) thus I don't see how you can conclude that
> running both np.argmax() and np.max() on the input array is going to
> incur in a small penalty compared to running np.argmax() and then indexing.
>
> Cheers,
> Dan
>
>
> >
> > -elliot
> >
> > On Wed, Oct 30, 2019, 10:32 PM Daniele Nicolodi <daniele at grinta.net
> > <mailto:daniele at grinta.net>> wrote:
> >
> >     On 30/10/2019 19:10, Neal Becker wrote:
> >     > max(axis=1)?
> >
> >     Hi Neal,
> >
> >     I should have been more precise in stating the problem. Getting the
> >     values in the array for which I'm looking at the maxima is only one
> step
> >     in a more complex piece of code for which I need the indexes along
> the
> >     second axis of the array. I would like to avoid to have to iterate
> the
> >     array more than once.
> >
> >     Thank you!
> >
> >     Cheers,
> >     Dan
> >
> >
> >     > On Wed, Oct 30, 2019, 7:33 PM Daniele Nicolodi <daniele at grinta.net
> >     <mailto:daniele at grinta.net>
> >     > <mailto:daniele at grinta.net <mailto:daniele at grinta.net>>> wrote:
> >     >
> >     >     Hello,
> >     >
> >     >     this is a very basic question, but I cannot find a satisfying
> >     answer.
> >     >     Assume a is a 2D array and that I get the index of the maximum
> >     value
> >     >     along the second dimension:
> >     >
> >     >     i = a.argmax(axis=1)
> >     >
> >     >     Is there a better way to get the value of the maximum array
> >     entries
> >     >     along the second axis other than:
> >     >
> >     >     v = a[np.arange(len(a)), i]
> >     >
> >     >     ??
> >     >
> >     >     Thank you.
> >     >
> >     >     Cheers,
> >     >     Daniele
> >     >     _______________________________________________
> >     >     NumPy-Discussion mailing list
> >     >     NumPy-Discussion at python.org
> >     <mailto:NumPy-Discussion at python.org>
> >     <mailto:NumPy-Discussion at python.org
> >     <mailto:NumPy-Discussion at python.org>>
> >     >     https://mail.python.org/mailman/listinfo/numpy-discussion
> >     >
> >     >
> >     > _______________________________________________
> >     > NumPy-Discussion mailing list
> >     > NumPy-Discussion at python.org <mailto:NumPy-Discussion at python.org>
> >     > https://mail.python.org/mailman/listinfo/numpy-discussion
> >     >
> >
> >     _______________________________________________
> >     NumPy-Discussion mailing list
> >     NumPy-Discussion at python.org <mailto:NumPy-Discussion at python.org>
> >     https://mail.python.org/mailman/listinfo/numpy-discussion
> >
> >
> > _______________________________________________
> > NumPy-Discussion mailing list
> > NumPy-Discussion at python.org
> > https://mail.python.org/mailman/listinfo/numpy-discussion
> >
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at python.org
> https://mail.python.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20191031/9312e887/attachment.html>


More information about the NumPy-Discussion mailing list