[Numpy-discussion] max argmax combo
Charles R Harris
charlesr.harris at gmail.com
Mon Sep 18 23:05:42 CDT 2006
On 9/18/06, Bill Baxter <wbaxter at gmail.com> wrote:
> 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)
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
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.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Numpy-discussion