Re: Find index of maximal element in multi-dimensional array
- To: mathgroup at smc.vnet.net
- Subject: [mg73508] Re: Find index of maximal element in multi-dimensional array
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Wed, 21 Feb 2007 01:34:50 -0500 (EST)
- Organization: The Open University, Milton Keynes, UK
- References: <erelbt$7h4$1@smc.vnet.net>
Andrew Moylan wrote: > Hi all, > > Here's a two-dimensional array of numbers: > > z = Table[Random[], {5}, {6}] > > What's an efficient way of finding the index of the maximal element of > z? Here's one way: > > Last[Sort[Flatten[MapIndexed[{#2, #1} & , z, {2}], 1], > OrderedQ[{#1[[2]], #2[[2]]}] & ]] > > The output is like this: > > {{5, 4}, 0.921344} > > But it's so untidy. Any better ideas? > > Cheers, > > Andrew > > What about using Position? In[1]:= z = Table[Random[], {5}, {6}] Out[1]= {{0.614105,0.694755,0.330049,0.387635,0.62543,0.418811}, {0.70748,0.421158,0.382081,0.0055536,0.460341,0.479205}, {0.254711,0.137264,0.15499,0.535576,0.0582237,0.124846}, {0.557463,0.129568,0.212017,0.770145,0.825369,0.676279}, {0.597912,0.0753907,0.49532,0.288645,0.972482,0.65658}} In[2]:= posmax[z_] := Module[{m = Max[z]}, {Position[z, x_ /; x == m][[1]], m}] In[3]:= posmax[z] Out[3]= {{5,5},0.972482} Regards, Jean-Marc