Ah, nice. I don't remember seeing setbadif(). Time to update my pdl-foo, apparently :)
Best, Maggie On Fri, Dec 23, 2011 at 12:00 PM, David Mertens <[email protected]>wrote: > > On Dec 23, 2011 8:57 AM, "Maggie X" <[email protected]> wrote: > > > > How about this > > > > pdl> p $p > > > > > > [ > > [1 0 3 0] > > [0 1 0 1] > > [1 3 1 3] > > [0 1 0 1] > > ] > > > > pdl> $p->where($p >= 3) .= -999 > > > > pdl> p $p > > > > [ > > [ 1 0 -999 0] > > [ 0 1 0 1] > > [ 1 -999 1 -999] > > [ 0 1 0 1] > > ] > > > > pdl> $p->badflag(1); > > > > pdl> $p = $p->setvaltobad(-999); > > Better yet: > > pdl> $p->badflag(1); > pdl> $p = $p->setbadif($p > 3); > > :) > > > > > pdl> p $p > > > > [ > > [ 1 0 BAD 0] > > [ 0 1 0 1] > > [ 1 BAD 1 BAD] > > [ 0 1 0 1] > > ] > > > > pdl> p $p->cov_table; > > > > [ > > [ 0.22222222 -0.22222222 BAD -0.22222222] > > [-0.22222222 0.25 0 0.25] > > [ BAD 0 0 0] > > [-0.22222222 0.25 0 0.25] > > ] > > > > > > On Fri, Dec 23, 2011 at 12:59 AM, zev <[email protected]> wrote: > >> > >> Yes! that is what I am trying to do and yes those are the loops i am > trying to avoid. > >> > >> Just to prove that I am not begging for free labor here the loop I just > finished writing. It is in a perl script not the pdl shell. > >> > >> my $n_row = $piddle->slice('0,:')->nelem; > >> > >> for (my $i = 0; $i <= $n_row - 1; $i++){ > >> my $loc_a = $piddle->PDL::slice(":,$i"); > >> for (my $j = 0; $j <= $n_row -1; $j++){ > >> my $loc_b = $piddle->PDL::slice(":,$j"); > >> my ($sub_a, $sub_b) = where($loc_a, $loc_b, $loc_a < 3 & > $loc_b <3); > >> my $cov = $sub_a->cov($sub_b)->at; > >> $r_data{$i}{$j} = $cov; > >> } > >> } > >> > >> > >> On Thu, Dec 22, 2011 at 10:26 PM, Derek Lamb <[email protected]> > wrote: > >>> > >>> ugh, not really. (also make sure to cc the list on your replies). > Too many $b's floating around, and no clue what $a is in your concept > function. I think it is one of your slices there? How about this: > >>> > >>> pdl> use PDL::Stats > >>> pdl> p $input > >>> > >>> [ > >>> [1 0 3 0] > >>> [0 1 0 1] > >>> [1 3 1 3] > >>> [0 1 0 1] > >>> ] > >>> > >>> pdl> for $i(0..$input->dim(1)-1){ > >>> $y = $input(:,($i)); > >>> for $j(0..$input->dim(1)-1){ > >>> $z = $input(:,($j)); > >>> ($a,$b) = where($y,$z,($y<3) & ($z<3)); > >>> $c = cov($a,$b); > >>> print "$i, $j: $c\n"; > >>> } > >>> } > >>> 0, 0: 0.222222222222222 > >>> 0, 1: -0.222222222222222 > >>> 0, 2: 0 > >>> 0, 3: -0.222222222222222 > >>> 1, 0: -0.222222222222222 > >>> 1, 1: 0.25 > >>> 1, 2: 0 > >>> 1, 3: 0.25 > >>> 2, 0: 0 > >>> 2, 1: 0 > >>> 2, 2: 0 > >>> 2, 3: 0 > >>> 3, 0: -0.222222222222222 > >>> 3, 1: 0.25 > >>> 3, 2: 0 > >>> 3, 3: 0.25 > >>> > >>> Is that what you are trying to get, but without the two for loops? > >>> > >>> Derek > >>> > >>> > >>> On Dec 22, 2011, at 11:34 AM, zev wrote: > >>> > >>>> > http://stackoverflow.com/questions/8595244/pdl-pairwise-row-comparison > >>>> > >>>> On Thu, Dec 22, 2011 at 11:30 AM, zev <[email protected]> > wrote: > >>>>> > >>>>> Thank you for your help. > >>>>> > >>>>> > >>>>> Here is some sudo code that will (hopeful) illustrate my point > better. > >>>>> > >>>>> p $b > >>>>> > >>>>> [ > >>>>> [1 0 3 0] > >>>>> [0 1 0 1] > >>>>> [1 3 1 3] <- example piddle y > >>>>> [0 1 0 1] <- example piddle z > >>>>> ] > >>>>> > >>>>> my concept function{ > >>>>> > >>>>> > >>>>> slice $b (grab row z) - works fine > >>>>> slice $b (grab row y) - works fine > >>>>> > >>>>> > >>>>> ($a, $b) = where($a,$b, $a < 3 && $b < 3 ) - works fine > >>>>> > >>>>> p $a [1 1] > >>>>> p $b [0 0] > >>>>> > >>>>> cov($a $b) - works just fine. > >>>>> > >>>>> } > >>>>> > >>>>> I just need a way to execute pairwise across all rows. I will need > to do factorial(n rows) comparisons. > >>>> > >>>> > >>>> > >>>> > >>>> -- > >>>> Zev Kronenberg > >>>> Graduate Student > >>>> University of Utah > >>>> phone: 208-629-6224 > >>>> > >>> > >> > >> > >> > >> -- > >> Zev Kronenberg > >> Graduate Student > >> University of Utah > >> phone: 208-629-6224 > >> > >> > >> _______________________________________________ > >> Perldl mailing list > >> [email protected] > >> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl > >> > > > > > > _______________________________________________ > > Perldl mailing list > > [email protected] > > http://mailman.jach.hawaii.edu/mailman/listinfo/perldl > > >
_______________________________________________ Perldl mailing list [email protected] http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
