Services & Resources / Wolfram Forums
MathGroup Archive
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2004

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

Search the Archive

Re: Label of Max[list]

  • To: mathgroup at
  • Subject: [mg50226] Re: Label of Max[list]
  • From: Bill Rowe <readnewsciv at>
  • Date: Sat, 21 Aug 2004 03:04:40 -0400 (EDT)
  • Sender: owner-wri-mathgroup at

On 8/20/04 at 4:57 AM, drbob at (DrBob) wrote:

>wehMax[li_] := {m = Max[li], Select[Range[Length[li]], li[[#1]] == m & ]}
>myLabelMax[data_] :=
>   Module[{max = Max[data]}, {max, Flatten[Position[data, max]]}]

>test[n_] := Module[
>    {data = RandomArray[BinomialDistribution[10, 0.3], {n}], one, two},
>    one = Timing[wehMax[data]];
>    two = Timing[myLabelMax[data]];
>   {First[one], First[two], Last[one] == Last[two]}]

>{1.5779999999999994*Second, 0.09299999999999997*Second, True}

>That's a timing for your method, then mine, and a test to see if
>they got the same answer.

If it is speed you are after consider

labelMax[data_] := 
  ({data[[#1[[1]]]], #1} & )[Ordering[data, -1]]

test[n_] := Module[
   {data = Table[Random[], {n}], one, two}, 
   one = Timing[labelMax[data]]; 
   two = Timing[myLabelMax[data]]; 
   {First[one], First[two], Last[one] == Last[two]}]
{0.03999999999999915*Second, 1.3100000000000023*Second, True}

Note, I changed your test program to use a uniform distribution of reals rather than a binomial distribution of integers for two reasons. First, generating a million uniform reals requires less time then generating a million binomial integers. Second, it is very likely the maximum of a million uniform reals is a unique value in that set. If the maximum value is not unique then the two methods will not give the same result.

Flatten@Position[data,Max@data] will return an ordered lists of all indices where Max@data occurs

Ordering[data, -1] will return a one element list containing the position of the last occurance of Max@data

Your method will get the same results as the method used by the OP. It isn't clear whether the OP considered duplicate maximum values or not.

To reply via email subtract one hundred and four

  • Prev by Date: Re: Beware of NSolve - nastier example
  • Next by Date: Re: Beware of NSolve - nastier example
  • Previous by thread: Re: Label of Max[list]
  • Next by thread: Hypergeometric function