MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

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]