choose elements from list based on elements in different list
- To: mathgroup at smc.vnet.net
- Subject: [mg86707] choose elements from list based on elements in different list
- From: Claus <clausenator at gmail.com>
- Date: Wed, 19 Mar 2008 05:23:33 -0500 (EST)
- Organization: Comp.Center (RUS), U of Stuttgart, FRG
Hi, I'm trying to choose elements from list based on elements in different list and I came up with the ideas listed below. It seems to me that there are a few too many steps involved here, and I need to run this on larger lists (~20000 entries). Are there ways to improve this? Thanks, Claus Here is the mathematica code: Reihe1={22,33,44,0,0,16,5,0,0,0} Reihe2={16,27,0,0,5,11,5,0,0,12} {22, 33, 44, 0, 0, 16, 5, 0, 0, 0} {16, 27, 0, 0, 5, 11, 5, 0, 0, 12} (*Find out where in Reihe1 and in Reihe2 are Zeros and notZeros*) Reihe1Is0 = Thread[Reihe1 == 0] Reihe1Not0 = Thread[Reihe1 != 0] Reihe2Is0 = Thread[Reihe2 == 0] Reihe2Not0 = Thread[Reihe2 != 0] {False, False, False, True, True, False, False, True, True, True} {True, True, True, False, False, True, True, False, False, False} {False, False, True, True, False, False, False, True, True, False} {True, True, False, False, True, True, True, False, False, True} (*Select the values of Reihe1 and Reihe2 which are of interest There are 4 Cases (not all of them calculated later) : Case1 : Reihe1 and Reihe2 are 0 Case2 : Reihe1 and Reihe2 are NOT 0 Case3 : (Reihe2 is NOT 0) AND (Reihe1 is 0) Case4 : (Reihe1 is NOT 0) AND (Reihe2 is 0)*) PreCase3=Pick[Reihe2,Reihe1Is0] PreCase4=Pick[Reihe1,Reihe2Is0] {0, 5, 0, 0, 12} {44, 0, 0, 0} Case3=Select[PreCase3,#>0&] Case4=Select[PreCase4,#>0&] {5, 12} {44}
- Follow-Ups:
- Re: choose elements from list based on elements in different list
- From: "Thomas Dowling" <thomasgdowling@gmail.com>
- Re: choose elements from list based on elements in different list