[Numpy-discussion] max argmax combo
Travis Oliphant
oliphant at ee.byu.edu
Tue Sep 19 19:16:32 EDT 2006
Charles R Harris wrote:
>
>
> On 9/18/06, *Bill Baxter* <wbaxter at gmail.com
> <mailto:wbaxter at gmail.com>> wrote:
>
> On 9/19/06, Charles R Harris <charlesr.harris at gmail.com
> <mailto:charlesr.harris at gmail.com>> wrote:
> > On 9/18/06, Bill Baxter <wbaxter at gmail.com
> <mailto: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)
>
>
> It shouldn't be too difficult to jig something up given all the
> example code. I can do that, but I would like more input first. The
> questions I have are these.
>
> 1) Should it be done?
> 2) Should it be a method? (functions being somewhat deprecated)
> 3) What name should it have?
>
> I think Travis will have to weigh in on this. IIRC, he felt that the
> number of methods was getting out of hand.
I can support adding a *function* that does both. It can't be named
extract (that already exists). There should be one for all the
"arg"-like functions.
If somebody doesn't add it before 1.0 final, it can wait for 1.0.1
-Travis
More information about the NumPy-Discussion
mailing list