#!/usr/bin/env perl use strict; use warnings; use PDL; use PDL::NiceSlice; my $x = pdl(0,4,0,-3); print "Before: $x\n"; $x(which($x > 0)) .= 1; $x(which($x < 0)) .= 0; $x(which($x == 0)) .= int(rand(9)) > 5 ? 1: 0; print "After: $x\n"; exit; #### #!/usr/bin/env perl use strict; use warnings; use PDL; my $x = pdl(0,4,0,-3); print "Before: $x\n"; my $n = nelem($x); for ( my $i = 0; $i < $n; ++$i ) { my $val = $x->index($i); $val = $val > 0 ? 1 : $val < 0 ? 0 : $val == 0 ? (int(rand(9)) > 5 ? 1 : 0) : undef; $x->index($i) .= $val; } print "After: $x\n"; exit;