Re: Label of Max[list]

• To: mathgroup at smc.vnet.net
• Subject: [mg50221] Re: Label of Max[list]
• From: rknapp at wolfram.com (Rob Knapp)
• Date: Sat, 21 Aug 2004 03:04:24 -0400 (EDT)
• References: <cg20iv\$os6\$1@smc.vnet.net> <cg4f36\$cdp\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

If, as the example indicates, the data consists of real numbers,

whereMax[data_] := Module[{pos = Ordering[data, -1]},
{data[[pos[[1]]]], pos}]

is orders of magnitude faster.  If the data consists of Numeric
quantities (e.g. Pi, E ...), then you can use the more general, but
slower

whereMaxNumeric[data_] := Module[{pos = Ordering[data, -1, Less]},
{data[[pos[[1]]]], pos}]

If data is not a packed array, the numeric version is not a whole lot
slower.

Rob Knapp

Jens-Peer Kuska <kuska at informatik.uni-leipzig.de> wrote in message news:<cg4f36\$cdp\$1 at smc.vnet.net>...
> Hi,
>
> wehMax2[lst_] :=
>   Module[{mm = Max[lst]},
>     k = Position[lst, mm];
>     {mm, k[[1]]}
>     ]
>
> should be a bit faster :-)
>
> Regards
>   Jens
>
> "Dr. Wolfgang Hintze" wrote:
> >
> > Is there a standard function providing beside the maximum of a list also
> > the label(s) of the maximum?
> >
> > My solution is this
> >
> > In[23]:=
> > wehMax[li_] := {m = Max[li], Select[Range[Length[li]],
> >      li[[#1]] == m & ]}
> >
> > In[24]:=
> > li = Table[Random[], {100}];
> >
> > In[25]:=
> > wehMax[li]
> >
> > Out[25]=
> > {0.9963517693166272, {89}}
> >
> > Is there a better one?
> >
> > Any hint appreciated.
> >
> > Wolfgang

• Prev by Date: Re: Comparison of Mathematica on Various Computers
• Next by Date: Re: Beware of adding 0.0
• Previous by thread: Re: Label of Max[list]
• Next by thread: Re: Label of Max[list]