Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

How to fill the contents of a 2D piddle?

by xanadol (Novice)
on Feb 24, 2014 at 18:04 UTC ( [id://1076012]=perlquestion: print w/replies, xml ) Need Help??

xanadol has asked for the wisdom of the Perl Monks concerning the following question:

Assuming that I want to fill a 2D array(not piddle) by reading in a coma delimited text, I'd probably go about as follows:

Note that  @tempimage's each row is a coma delimited text, and it's # of rows are greater than 1.

my @image2D=undef; for(my $ix=0; $ix<scalar @tempimage; $ix++) { my @temp=split("\,",$tempimage[$ix]); for(my $iy=0; $iy<scalar @temp; $iy++) { $image2D[$ix][$iy]=$temp[$iy]; } }

So, for each row in  @tempimage, I can split the coma delimited values and replace them to a column in a 2D perl array(which is  @image2d), and I can access any element by saying  $image2D[$index_1][$index_2]

How can I fill a pdl in the same fashion? Can I also create a nested for loop and manipulate the contents of a pdl? Must I create a pdl of zeros and fill the zero indices?

Thanks for all the input!

Replies are listed 'Best First'.
Re: How to fill the contents of a 2D piddle?
by dwm042 (Priest) on Feb 24, 2014 at 19:01 UTC

    Simplest way is to do what you did previously and then assign the array to a piddle:

    my $img2Dpdl = pdl @image2D;


Re: How to fill the contents of a 2D piddle?
by kevbot (Vicar) on Feb 25, 2014 at 05:47 UTC
    You can read delimited data directly into PDLs using the rcols function from the PDL::IO::Misc module. For example, if you have the following data in a file named table.csv
    0.1,0.2,0.3,0.4,0.5 1,2,3,4,5 1.1,2.2,3.3,4.4,5.5 10,20,30,40,50 100,200,300,400,500
    Then you can read it into a 2D PDL as follows:
    #!/usr/bin/env perl use strict; use warnings; use PDL; use PDL::IO::Misc; my $x = pdl( rcols 'table.csv', { COLSEP => ',' } ); print $x; exit;
    and the output will be:
    [ [0.1 1 1.1 10 100] [0.2 2 2.2 20 200] [0.3 3 3.3 30 300] [0.4 4 4.4 40 400] [0.5 5 5.5 50 500] ]

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://1076012]
Approved by Old_Gray_Bear
Front-paged by toolic
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others studying the Monastery: (5)
As of 2024-04-12 11:02 GMT
Find Nodes?
    Voting Booth?

    No recent polls found