Re: sort and positon matrix element help
- To: mathgroup at smc.vnet.net
- Subject: [mg73073] Re: [mg73050] sort and positon matrix element help
- From: János <janos.lobb at yale.edu>
- Date: Thu, 1 Feb 2007 03:23:02 -0500 (EST)
- References: <200701310512.AAA15216@smc.vnet.net>
On Jan 31, 2007, at 12:12 AM, comp.soft-sys.math.mathematica wrote:
> Hi, guys,
>
> I am attacking one proble and may need your help.
> I have a large matrix(m*n). I wanna to sort out the matrix
> from large to small according to its element's value AND save the
> corresponding row and column number as its position. Latter on, plot
> out the first 20 largest value accroding to their positions.
> Is there any good way to do this, especially take out the
> positons of element and assocate it with the value?
Here is a newbie approach:
In[1]:=
n = 5;
m = 7;
In[3]:=
mat = Table[Table[Random[
Integer, {10, 99}],
{j, m}], {i, n}]
Out[3]=
{{16, 80, 60, 16, 29, 79,
60}, {63, 13, 73, 15, 56,
26, 86}, {16, 10, 68, 41,
27, 98, 77}, {13, 55, 91,
87, 27, 22, 21},
{54, 25, 17, 55, 69, 69,
85}}
In[4]:=
umemb = Reverse[Union[
Flatten[mat]]]
Out[4]=
{98, 91, 87, 86, 85, 80, 79,
77, 73, 69, 68, 63, 60, 56,
55, 54, 41, 29, 27, 26, 25,
22, 21, 17, 16, 15, 13, 10}
In[5]:=
({#1, Position[mat,
#1]} & ) /@ umemb
Out[5]=
{{98, {{3, 6}}},
{91, {{4, 3}}},
{87, {{4, 4}}},
{86, {{2, 7}}},
{85, {{5, 7}}},
{80, {{1, 2}}},
{79, {{1, 6}}},
{77, {{3, 7}}},
{73, {{2, 3}}},
{69, {{5, 5}, {5, 6}}},
{68, {{3, 3}}},
{63, {{2, 1}}},
{60, {{1, 3}, {1, 7}}},
{56, {{2, 5}}},
{55, {{4, 2}, {5, 4}}},
{54, {{5, 1}}},
{41, {{3, 4}}},
{29, {{1, 5}}},
{27, {{3, 5}, {4, 5}}},
{26, {{2, 6}}},
{25, {{5, 2}}},
{22, {{4, 6}}},
{21, {{4, 7}}},
{17, {{5, 3}}},
{16, {{1, 1}, {1, 4},
{3, 1}}}, {15, {{2, 4}}},
{13, {{2, 2}, {4, 1}}},
{10, {{3, 2}}}}
With the best,
János
----------------------------------------------
Trying to argue with a politician is like lifting up the head of a
corpse.
(S. Lem: His Master Voice)