[Numpy-discussion] max argmax combo

Bill Baxter wbaxter at gmail.com
Mon Sep 18 22:19:32 CDT 2006

On 9/19/06, Charles R Harris <charlesr.harris at gmail.com> wrote:
> On 9/18/06, Bill Baxter <wbaxter at gmail.com> wrote:
> > I find myself often wanting both the max and the argmax of an array.
> > (And same for the other arg* functions)

> > You have to do something like
> >     a = rand(10,5)
> >     imax = a.argmax(axis=0)
> >     vmax = a[(imax, range(5))]
> >
> I don't generally like overloading return values, the function starts to
> lose its definition and becomes a bit baroque where simply changing a
> keyword value can destroy the viability of the following code.

Agreed.  Seems like the only justification is if you get multiple
results from one calculation but only rarely want the extra values.
It doesn't make sense to always return them, but it's also not worth
making a totally different function.

> But I can see the utility of what you want. Hmm,  this problem is not unique to argmax.
> Maybe what we need is a general way to extract values, something like
> extract(a, imax, axis=0)
> to go along with all the single axis functions.

Yes, I think that would be easier to remember.

It should also work for the axis=None case.
  imax = a.argmax(axis=None)
  v = extract(a, imax, axis=None)


More information about the Numpy-discussion mailing list