Re: How Functions are Applied to Matrices
- To: mathgroup at smc.vnet.net
- Subject: [mg66086] Re: [mg66064] How Functions are Applied to Matrices
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Sat, 29 Apr 2006 03:40:25 -0400 (EDT)
- References: <200604281032.GAA03133@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On 28 Apr 2006, at 19:32, Gregory Lypny wrote:
> Hello everyone,
>
> If I use functions, such as Mean, StandardDeviation, or Total, that
> operate on lists, they work the way I expect when applied to a single
> list. So, for example, the mean of data[[2]] below is 5.25.
> However, when I apply Mean to the entire 3 x 4 matrix, which I
> understand to be three lists, I expect to get three means. Instead I
> get four because Mean is operating on the columns and not the rows,
> that is, the four corresponding elements of each of the three lists.
>
> Why is that?
>
> Greg
>
>
> data={{-9,8,3,1},{2,12,3,4},{-6,-9,-9,8}}
>
> The mean of the second list:
>
> In[182]:=
> Mean[data[[2]]]//N
>
> Out[182]=
> 5.25
>
> Applying Mean to the whole matrix computes the mean of columns, not
> rows.
>
> In[181]:=
> Mean[data]//N
>
> Out[181]=
> {-4.33333,3.66667,-1.,4.33333}
>
> I need to Map it to have it applied to each list.
>
> In[183]:=
> Map[Mean,data]//N
>
> Out[183]=
> {0.75,5.25,-4.}
>
I am not sure if you will be satisfied with the following as the
answer to the question "why?" but at least I can say that Mean
inherits this behaviour from Total. Indeed, the Help for Mean says:
Mean[list] is equivalent to Total[list]/Length[list].
On the other hand,
mm = {{a, b, c}, {d, e, f}, {g, h, k}};
Total[mm]
{a+d+g,b+e+h,c+f+k}
which is the same as
Total/@(Transpose[mm])
{a+d+g,b+e+h,c+f+k}
Why? Probably because this behaviour is often convenient.
Andrzej Kozlowski
- References:
- How Functions are Applied to Matrices
- From: Gregory Lypny <gregory.lypny@videotron.ca>
- How Functions are Applied to Matrices