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