Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: choose elements from list based on elements in different list

  • To: mathgroup at smc.vnet.net
  • Subject: [mg86738] Re: choose elements from list based on elements in different list
  • From: Szabolcs Horvát <szhorvat at gmail.com>
  • Date: Thu, 20 Mar 2008 02:51:19 -0500 (EST)
  • Organization: University of Bergen
  • References: <frqpnb$4vl$1@smc.vnet.net>

Claus wrote:
> 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}
> 

You didn't actually say what you are trying to achieve.

Are you trying to pick those elements from Reihe1 for which the 
corresponding element of Reihe2 is nonzero?  Then use

Pick[Reihe1, Reihe2, Except[0, _Integer]]

(The _Integer part was necessary because Except[0] matches the entire list.)


  • Prev by Date: Re: Help with NMinimize of NIntegrate function
  • Next by Date: Re: Exceptions Style Problem
  • Previous by thread: Re: choose elements from list based on elements in different list
  • Next by thread: Re: choose elements from list based on elements in different list