[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Not where



Hi,

I have been using a routine called set_difference (see attached sets.pro) to
find the "not where". The routine(s) were written by someone at RSI and
posted to the group a couple a years ago. The routines are efficient
speedwise (especially for this problem) as they use the histogram function.
Here is the general way I use it:
zz=where(a gt scalar, cnt_zz)
not_zz=set_difference(lindgen(n_elements(a)) ,zz)

Cheers Paul

~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
Paul Krummel
CSIRO Atmospheric Research - GASLAB
Private Bag #1  Aspendale  Victoria  3195  Australia
e-mail: paul.krummel@dar.csiro.au   www: http://www.dar.csiro.au/
tel: +61 3 9239 4568    fax: +61 3 9239 4444
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~

"Kenneth P. Bowman" <bowman@null.edu> wrote in message
bowman-0702000905130001@bowman.tamu.edu">news:bowman-0702000905130001@bowman.tamu.edu...
> I often find myself using WHERE to divide an array into two parts.  I do
> one operation on the first part and a different operation on the second
> part.
>
> It would be nice to have an auxiliary array containing all the indices
> that are *not* returned by WHERE in i.  For example, it would be nice to
> do
>
> a = FLTARR(...)
> i = WHERE((a...), count, NOT_WHERE = j, NOT_COUNT = not_count)
> IF (count     GT 0L) THEN a[i] = ...
> IF (not_count GT 0L) THEN a[j] = ...
>
> Lacking the above changes to WHERE, can anyone suggest a fast and easy way
> to get j=NOT(i) ?
>
> Thanks, Ken
>
> --
> Dr. Kenneth P. Bowman, Professor                409-862-4060
> Department of Meteorology                       409-862-4466 fax
> Texas A&M University                            bowmanATcsrp.tamu.edu
> College Station, TX   77843-3150                Replace AT with @





begin 666 sets.pro
M.RL-"CL@3D%-13H-"CL)4T544PT*.PT*.R!3970@;W!E<F%T;W)S+B @56YI
M;VXL($EN=&5R<V5C=&EO;BP@86YD($1I9F9E<F5N8V4@*&DN92X@<F5T=7)N
M#0H[(&UE;6)E<G,@;V8@02!T:&%T(&%R92!N;W0@:6X@0BXI#0H[#0H[(%1H
M97-E(&9U;F-T:6]N<R!O<&5R871E(&]N(&%R<F%Y<R!O9B!P;W-I=&EV92!I
M;G1E9V5R<RP@=VAI8V@@;F5E9 T*.R!N;W0@8F4@<V]R=&5D+B @1'5P;&EC
M871E(&5L96UE;G1S(&%R92!I9VYO<F5D+"!A<R!T:&5Y(&AA=F4@;F\-"CL@
M969F96-T(&]N('1H92!R97-U;'0N#0H[#0H[(%1H92!E;7!T>2!S970@:7,@
M9&5N;W1E9"!B>2!A;B!A<G)A>2!W:71H('1H92!F:7)S="!E;&5M96YT(&5Q
M=6%L('1O#0H[("TQ+@T*.PT*.R!4:&5S92!F=6YC=&EO;G,@=VEL;"!N;W0@
M8F4@969F:6-I96YT(&]N('-P87)S92!S971S('=I=&@@=VED90T*.R!R86YG
M97,L(&%S('1H97D@=')A9&4@;65M;W)Y(&9O<B!E9F9I8VEE;F-Y+B @5&AE
M($A)4U1/1U)!32!F=6YC=&EO;@T*.R!I<R!U<V5D+"!W:&EC:"!C<F5A=&5S
M(&%R<F%Y<R!O9B!S:7IE(&5Q=6%L('1O('1H92!R86YG92!O9B!T:&4-"CL@
M<F5S=6QT:6YG('-E="X-"CL@1F]R(&5X86UP;&4Z#0H[(" @82 ](%LR+#0L
M-BPX70T*.R @(&(@/2!;-BPQ+#,L,ET-"CL@4V5T26YT97)S96-T:6]N*&$L
M8BD@/2!;(#(L(#9=(" @(" @(#L@0V]M;6]N(&5L96UE;G1S#0H[(%-E=%5N
M:6]N*&$L8BD@/2!;(#$L(#(L(#,L(#0L(#8L(#A=(" [($5L96UE;G1S(&EN
M(&5I=&AE<B!S970-"CL@4V5T1&EF9F5R96YC92AA+&(I(#T@6R T+" X72 @
M(" @(" @(#L@16QE;65N=',@:6X@02!B=70@;F]T(&EN($(-"CL@4V5T26YT
M97)S96-T:6]N*&$L6S,L-2PW72D@/2 M,2 ]($YU;&P@4V5T#0H[#0H[(%)E
M<V5A<F-H(%-Y<W1E;7,L($EN8RX@,CD@075G(#$Y.3<-"CLM#0H[#0I&54Y#
M5$E/3B!39715;FEO;BP@82P@8@T*:68@85LP72!L=" P('1H96X@<F5T=7)N
M+"!B(" @(#M!('5N:6]N($Y53$P@/2!A#0II9B!B6S!=(&QT(# @=&AE;B!R
M971U<FXL(&$@(" @.T(@=6YI;VX@3E5,3" ](&(-"G)E='5R;BP@=VAE<F4H
M:&ES=&]G<F%M*%MA+&)=+"!/34E.(#T@;VUI;BDI("L@;VUI;B [4F5T=7)N
M(&-O;6)I;F5D('-E= T*96YD#0H[#0I&54Y#5$E/3B!3971);G1E<G-E8W1I
M;VXL(&$L(&(-"FUI;F%B(#T@;6EN*&$L($U!6#UM87AA*2 ^(&UI;BAB+"!-
M05@];6%X8BD@.T]N;'D@;F5E9"!I;G1E<G-E8W1I;VX@;V8@<F%N9V5S#0IM
M87AA8B ](&UA>&$@/"!M87AB#0H[268@96ET:&5R('-E="!I<R!E;7!T>2P@
M;W(@=&AE:7(@<F%N9V5S(&1O;I)T(&EN=&5R<V5C=#H@<F5S=6QT(#T@3E5,
M3"X-"FEF(&UA>&%B(&QT(&UI;F%B(&]R(&UA>&%B(&QT(# @=&AE;B!R971U
M<FXL("TQ#0IR(#T@=VAE<F4H*&AI<W1O9W)A;2AA+"!-24X];6EN86(L($U!
M6#UM87AA8BD@;F4@,"D@86YD(" D#0HH:&ES=&]G<F%M*&(L($U)3CUM:6YA
M8BP@34%8/6UA>&%B*2!N92 P*2P@8V]U;G0I#0II9B!C;W5N="!E<2 P('1H
M96X@<F5T=7)N+" M,2!E;'-E(')E='5R;BP@<B K(&UI;F%B#0IE;F0-"CL-
M"D953D-424].(%-E=$1I9F9E<F5N8V4L(&$L(&(@(#L@/2!A(&%N9" H;F]T
M(&(I(#T@96QE;65N=',@:6X@02!B=70@;F]T(&EN($(-"FUI;F$@/2!M:6XH
M82P@34%8/6UA>&$I#0IM:6YB(#T@;6EN*&(L($U!6#UM87AB*0T*:68@*&UI
M;F(@9W0@;6%X82D@;W(@*&UA>&(@;'0@;6EN82D@=&AE;B!R971U<FXL(&$@
M.TYO(&EN=&5R<V5C=&EO;BXN+@T*<B ]('=H97)E*"AH:7-T;V=R86TH82P@
M34E./6UI;F$L($U!6#UM87AA*2!N92 P*2!A;F0@) T**&AI<W1O9W)A;2AB
M+"!-24X];6EN82P@34%8/6UA>&$I(&5Q(# I+"!C;W5N="D-"FEF(&-O=6YT
M(&5Q(# @=&AE;B!R971U<FXL("TQ(&5L<V4@<F5T=7)N+"!R("L@;6EN80T*
%96YD#0H`
`
end