If you are just starting with PDL, I recommend taking a look at the PDL Book (http://pdl.perl.org/?page=FirstSteps is the first chapter with a link to the PDF downloadable copy).
In specific answer to your question, you can select parts of a piddle by indexes along a dimension using a piddle as the index in a PDL::NiceSlice expression or the direct dice() method call. I PDL object (called/pronounced a "piddle") has a fixed size on allocation. If you wish to resize, that actually requires a memory copy of some sort. For large amounts of data, it is more efficient to use the slicing operations to select pieces of a larger piddle to work on. If you wish to replace an existing piddle with the new subset, just assign it with = to the original piddle scalar. E.g.: $a = sequence(3,5); # create original piddle $cols = pdl(0,1); # piddle of col indexes to keep $a = $a($cols,:); # selects those indices from dim(0) The final line results in a reallocated $a piddle. If you do this instead: $a_good = $a($cols,:); Then $a is still the same but $a_good is basically a piddle of the selected elements. The cool things is that you can use the elementwise assign to change the $a_good values and those will be modified in the original $a: $a_good .= -1; Now see what $a contains.... There are various examples in the PDL Book that go into more depth about threading and slicing.... Happy PDL-ing! Chris On Sat, Aug 24, 2013 at 12:54 PM, VE <[email protected]> wrote: > Dear All, > > this is my first post so if I break some rules do not beat me too hard. > > I make my first steps with PDL and have the following problem. > > Given the script: > > #!/perl > use strict; > use warnings; > use PDL; > use PDL::NiceSlice; > my $a = sequence (3,5); > print $a; > my $col = 2; > my $t = $a( $col,); > print $t; > print $a; > > I get the following output: > > [ > [ 0 1 2] > [ 3 4 5] > [ 6 7 8] > [ 9 10 11] > [12 13 14] > ] > [ > [ 2] > [ 5] > [ 8] > [11] > [14] > ] > [ > [ 0 1 2] > [ 3 4 5] > [ 6 7 8] > [ 9 10 11] > [12 13 14] > ] > > How can I modify the parent ($a) so that it contains "everything except what > is in the slice", as follows: > > [ > [ 0 1 ] > [ 3 4 ] > [ 6 7 ] > [ 9 10 ] > [12 13] > ] > > Thank you very much in advance. > > VE > --- > [email protected] > 24.08.2013 > > _______________________________________________ > 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
