Re: Nested list data extraction bottleneck
- To: mathgroup at smc.vnet.net
- Subject: [mg107617] Re: Nested list data extraction bottleneck
- From: Albert Retey <awnl at gmx-topmail.de>
- Date: Fri, 19 Feb 2010 07:33:16 -0500 (EST)
- References: <hllidp$q6$1@smc.vnet.net>
Am 19.02.2010 09:34, schrieb Mumtaz:
> (* BEGIN the beguine simple code *)
>
> ClearAll["Global`*"]
>
> (* prototype data list *)
> LS = {{{0,533},{0,549},{0,554},{0,547}},{{0,533},{0,536},{0,541},
> {0,533}}};
>
> (* list LS dimensions *)
> LSdim = Dimensions[LS]
> {2,4,2}
>
> (* list LS terminal values -- major bottle neck for higher dimensions
> *)
> LSterminal = Table[Last[LS[[i]]], {i, LSdim[[3]]}]
> {{0,547},{0,533}}
>
> (* extract relevant list LS terminal values data *)
> LSterminal[[All,2]]
> {547,533}
>
> (* OK *)
> (* END simple code *)
>
>
> (* No doubt, there is a better way to extract terminal values from
> list LS since the data has already been generated; Table function for
> generating LSterminal should not be necessary *)
As usual the question is what would qualify a solution to be better?
Your code works, so it is good. Here are two approaches that are shorter
(1) and should be faster (2), but probably are also more arcane:
Map[Last, LS, -2]
Flatten[LS[[All, All, -1, -1]]]
> (* Further, any ideas on extracting the following type stream from
> list LS would also be appreciated: *)
> (* SomeFunction[LS] operating on LS above will output: *)
> (* {{533, 549, 554, 547}, {533, 536, 541, 533}} *)
the above need only small changes:
Map[Last, LS, {-2}]
LS[[All, All, All, -1]]
search for the documentation of Map to learn about the optional third
argument, but I think when you know the depth of your lists in advance
nothing will beat the part specifications...
hth,
albert