Re: Using Select
- To: mathgroup at smc.vnet.net
- Subject: [mg97414] Re: Using Select
- From: "Karsten W." <Karsten.G.Weinert at googlemail.com>
- Date: Thu, 12 Mar 2009 05:44:20 -0500 (EST)
- References: <gpacsh$ms3$1@smc.vnet.net>
Ok, this one I can answer myself, now that I have learned about Pick[]
data = Import[...];
dataEval = f[data, ...];
filterQ = Map[# > 0&, dataEval];
filteredData = Pick[data, filterQ];
Looks much better to me.
Best wishes,
Karsten.
On 12 Mrz., 08:16, "Karsten W." <Karsten.G.Wein... at googlemail.com>
wrote:
> Hello,
>
> here is a problem I have solved but I am not happy with the method
>
> I have a data matrix DATA, a list of m ordered n-tuples. I run a
> function on the data matrix which returns a list DATAEVAL with m
> elements. The i-th element of this list corresponds to the i-th tuple
> of the data matrix. I think of this DATAEVAL list as an additional
> column of the data matrix.
>
> Now I am only interested in those tuples of the data matrix, where the
> corresponding DATAEVAL list has a value greater than zero.
>
> My current approach is the following: I add the DATAEVAL list to the
> data matrix and call Select afterwards:
>
> data = Import[...];
> dataEval = f[data, ...];
> filteredData = Select[Transpose[Join[Transpose[data], {dataEval}] ],
> Last[#] > 0 &];
>
> This works. However, calling Transpose two times seems not to be the
> most efficient way to solve the problem.
>
> As a newbie to Mathematica (and functional programming), I wonder if
> you can point me to a simpler solution?
>
> Kind regards,
> Karsten.