Re: How Functions are Applied to Matrices
- To: mathgroup at smc.vnet.net
- Subject: [mg66088] Re: [mg66064] How Functions are Applied to Matrices
- From: Darren Glosemeyer <darreng at wolfram.com>
- Date: Sat, 29 Apr 2006 03:40:32 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Mean, StandardDeviation, and Total operate on matrix data as a list of data vectors (or equivalently a data matrix for multivariate data), so the results are column-wise. As you've noted, the result you desire can be obtained using Map. Another possibility, assuming your lists are equal length, would be to work with Transpose[data] instead of data. Darren Glosemeyer Wolfram Research At 06:32 AM 4/28/2006 -0400, 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.}