Re: Re: making a column into a list
- To: mathgroup at smc.vnet.net
- Subject: [mg23050] Re: [mg22990] Re: [mg22964] making a column into a list
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Thu, 13 Apr 2000 02:43:33 -0400 (EDT)
- References: <LP9J4.62$UI4.3344@ralph.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Mark,
Thanks for bringing this to my attention.
We can get a flat list directly:
mat = {{1, 2, 3}, {4, 5, 6}};
mat[[All, 2]]
{2, 5}
The brackets also allow quit a bit of construction:
mat[[{2, 1, 1}, {2, 1, 2}]]
{{5, 4, 5}, {2, 1, 2}, {2, 1, 2}}
--
Allan
---------------------
Allan Hayes
Mathematica Training and Consulting
Leicester UK
www.haystack.demon.co.uk
hay at haystack.demon.co.uk
Voice: +44 (0)116 271 4198
Fax: +44 (0)870 164 0565
"Mark Harder" <harderm at ucs.orst.edu> wrote in message
news:LP9J4.62$UI4.3344 at ralph.vnet.net...
> Allan;
> Thanks for the suggestion to use Part to extract a column from a
matrix;
> it is indeed simpler and faster when you want to keep the extracted column
> in column-vector form. To get a flat list from your result, requires that
> TakeColumn be followed by Flatten[].
> I must confess that this aspect of Mathematica -- the correspondences
> between "vector" and "list" and "matrix" and "2-dimensional list"-- is
> still a bit confusing to me, so let me run through my reasoning. The
result
> that you obtained with TakeColumns[], remains in the form of a column
matrix
> (list of single-element lists), and I was attempting to produce a "list",
as
> per the poster's request, which I interpreted to be a singly dimensioned
> list, which I thought corresponded to a row-vector from some matrix. To
see
> how this latter is incorrect, I now note the difference between using
> Flatten and Transpose:
>
> In[6]:=Flatten[{{1}, {1}, {1}} ]
>
> Out[6]={1, 1, 1}
>
> , a flat list.
>
>
> In[7]:=Transpose[{{1}, {1}, {1}} ]
>
> Out[7]={{1, 1, 1}}
>
> , a list-of-lists, or a one-by-three matrix.
>
> In working out my posting, I used Column[], from the
> Statistics`DataManipulation` package, which I had forgotten was loaded at
> the time. Sorry I did not mention that; details, details....
>
> -mark harder
> harderm at ucs.orst.edu
>
>
> -----Original Message-----
> From: Allan Hayes <hay at haystack.demon.co.uk>
To: mathgroup at smc.vnet.net
> Subject: [mg23050] [mg22990] Re: [mg22964] making a column into a list
>
>
> >Mark:
> >You report
> >> To get a column from a matrix in list form:
> >> IN>
> >> matrix = {{1, 2}, {1, 2}, {1, 2}}
> >> column = Column[matrix, 1]
> >> OUT>
> >> {{1, 2}, {1, 2}, {1, 2}}
> >> {1, 1, 1}
> >
> >This doesn't work for me with Mathematica 4.0.
> >
> >matrix = {{1, 2}, {1, 2}, {1, 2}}
> >column = Column[matrix, 1]
> >
> >{{1, 2}, {1, 2}, {1, 2}}
> >
> >Column[{{1, 2}, {1, 2}, {1, 2}}, 1]
> >
> >Did you mean TakeColumns from the package?
> >
> ><< LinearAlgebra`MatrixManipulation`
> >
> >TakeColumns[matrix, {1}]
> >
> > {{1}, {1}, {1}}
> >
> >-------------------------------------
> >
> >But in Mathematica 4.0 we can use
> >
> >matrix[[All, {1}]]
> >
> >{{1}, {1}, {1}}
> >
> >And this is much faster:
> >
> >matrix = Table[Random[], {50000}, {10}];
> >
> >TakeColumns[matrix, {1}]; // Timing
> >
> >{1.37 Second, Null}
> >
> >matrix[[All, {1}]]; // Timing
> >
> >{0.11 Second, Null}
> >
> >
> >--
> >Allan
> >---------------------
> >Allan Hayes
> >Mathematica Training and Consulting
> >Leicester UK
> >www.haystack.demon.co.uk
> >hay at haystack.demon.co.uk
> >Voice: +44 (0)116 271 4198
> >Fax: +44 (0)870 164 0565
> >
> >
> >
> >
> >
> >
>
>
>