Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

RFC: 100 PDL Exercises (ported from numpy)

by mxb (Pilgrim)
on May 03, 2018 at 09:05 UTC ( [id://1213987]=perlmeditation: print w/replies, xml ) Need Help??

Help for this page

Select Code to Download


  1. or download this
    use PDL::Version;
    print $PDL::Version::VERSION;
    
  2. or download this
    my $z = zeros(10);
    print $z;
    
  3. or download this
    use PDL::Core ':Internal'
    my $z = zeros(10);
    my $size = howbig($z->get_datatype) * $z->nelem;
    print $size;
    
  4. or download this
    # To get top level PDL help
    perldoc PDL
    
  5. or download this
    my $z = zeros(10);
    $z->slice(4) .= 1;
    print $z;
    
  6. or download this
    my $z = zeros(10);
    $z(4) .= 1;
    print $z;
    
  7. or download this
    my $z = 10 + sequence(40);
    print $z;
    
  8. or download this
    my $z = sequence(10);
    $z = $z(-1:0);
    print $z;
    
  9. or download this
    my $z = sequence(3,3);
    print $z;
    
  10. or download this
    my $vec = pdl [1,2,0,0,4,0];
    my $nz = $vec->which;
    print $nz;
    
  11. or download this
    my $z = identity(3);
    print $z;
    
  12. or download this
    my $z = random(3,3,3);
    print $z;
    
  13. or download this
    my $z = random(10,10);
    print $z->min, $z->max;
    
  14. or download this
    my $z = random(30);
    print $z->avg;
    
  15. or download this
    my $z = ones(10,10);
    $z(1:8,1:8) .= 0;
    print $z;
    
  16. or download this
    my $a = random(8,8);
    my $x = zeros(2 + $a->dim(0), 2 + $a->dim(1));
    $x(1:8,1:8) .= $a;
    print $x;
    
  17. or download this
    my $z = identity(5) * (1 + sequence(5));
    $z->where($z > 4) .= 0;
    $z = $z->transpose->rotate(1)->transpose;
    print $z;
    
  18. or download this
    my $z = zeros(8,8);
    $z("0::2","0::2") .= 1
    $z("1::2","1::2") .= 1
    print $z;
    
  19. or download this
    my $z = random(6,7,8);
    my $hundreth = $z->clump($z->ndims)->(100);
    # TODO: find index of $hundreth in $z
    
  20. or download this
    my $z = random(5,5);
    $z = (($z - $z->min) / ($z->max - $z->min));
    print $z;
    
  21. or download this
    my $x = ones(3,5);
    my $y = ones(2,3);
    print $x x $y;
    
  22. or download this
    my $z = sequence(10);
    $z->where($z <= 8 & $z>= 3) *= -1;
    print $z;
    
  23. or download this
    my $z = sequence(long, 10);
    $z ** $z;
    2 << $z >> 2;
    ...
    1j * $z;
    $z / 1 / 1;
    $z < $z > $z;
    
  24. or download this
    print pdl(0) / pdl(0);
    print pdl(0) // pdl(0);
    print float int pdl(NaN);
    
  25. or download this
    $z = 20 * random(10) - 10;
    $z->where($z < 0) .= - $z->where($z < 0)->abs->ceil;
    $z->where($z > 0) .= $z->where($z > 0)->ceil;
    print $z;
    
  26. or download this
    my $z1 = long 256 * random(10);
    my $z2 = long 256 * random(10);
    print intersect $z1, $z2;
    
  27. or download this
    # No built in PDL time/date functions
    my $yesterday = time() - (60 * 60 * 24);
    my $today = time();
    my $tomorrow = time() + (60 * 60 * 24);
    
  28. or download this
    my $a = ones(3);
    my $b = 2 * ones(3);
    my $c = 3 * ones(3);
    print ($a + $b) * (- $a/2)
    
  29. or download this
    my $z = 10 * random(10);
    print $z->ceil;
    print $z->floor;
    print byte $z;
    print long $z;
    print longlong $z;
    
  30. or download this
    my $z = xvals zeros(5,5);
    print $z;
    
  31. or download this
    my $z = (sequence(12) / 11)->slice("1:10");
    print $z;
    
  32. or download this
    my $z = random(10)->qsort;
    print $z;
    
  33. or download this
    my $a = random(10);
    my $b = random(10);
    print $a == $b;
    
  34. or download this
    use PDL::Complex;
    my $z = random(2,10);
    my $p = Cr2p($z);
    print $p;
    
  35. or download this
    my $z = random(10);
    $z->where($z == $z->max) .= 0;
    print $z;
    
  36. or download this
    # This cannot be done directly, but you can extract the underlying
    # C type used for each PDL type:
    
    ...
    print indx->realctype;
    print float->realctype;
    print double->realctype;
    
  37. or download this
    # Set maximum print limit to one million elements
    $PDL::toolongtoprint = 1_000_000;
    $z = zeros(1000,1000);
    print $z;
    
  38. or download this
    my $z = random(10,2);
    my ($x,$y) = ($z(:,0), $z(:,1));
    my $d = (($x - $x->transpose)->ipow(2)) +
            (($y - $y->transpose)->ipow(2));
    print $d;
    
  39. or download this
    my $z = float 1000 * random(10);
    $z = long $z;
    
  40. or download this
    1,2,3,4,5
    6,,,7,8
    ,,9,10,11
    
  41. or download this
    my $z = rcols "data.csv", { COLSEP => ',' }, [];
    $z = $z->transpose;     # optional (PDL is column major)
    print $z;
    
  42. or download this
    my $z = grandom(10,10);     # correct?
    print $z;
    
  43. or download this
    my $p = 3;
    my $z = zeros(10,10);
    my $i = indx $z->nelem * random($p)
    $z->clump($z->ndims)->($i) .= 1;
    print $z;
    
  44. or download this
    my $z = random(5, 10);
    $z = $z - $z->avgover->transpose;
    print $z;
    
  45. or download this
    my ($w, $h) = (16, 16);
    my $i = byte 256 * random($w, $h, 3);
    my $uniqcol = $i->uniq->nelem;
    print $uniqcol;
    
  46. or download this
    my $z1 = random(10, 10);
    my $z2 = random(10, 10);
    print $z1->inner($z2);
    
  47. or download this
    my $z = pdl [1,2,3,4,5];
    my $nz = 3;
    my $x = zeros($z->dim(0) * $nz);
    $x("0::$nz") .= $z;
    print $x;
    
  48. or download this
    my $z1 = ones(5,5,3);
    my $z2 = 2 * ones(5,5);
    print $z1 * $z2;
    
  49. or download this
    my $z = sequence(5,5);
    $z(0:1,) .= $z(1:0,)->sever;
    print $z;
    
  50. or download this
    my $z = long 2 * random(10);
    $z = not $z;
    print $z;
    $z = -5 + sequence(10);
    $z = -1 * $z;
    print $z;
    
  51. or download this
    $z = 10 * random(15);
    $len = 4;
    my @r = ();
    push @r,  $z($_:$_ + $len-1) for (0 .. $z->nelem - $len)
    $r = pdl @r;
    print $r;
    
  52. or download this
    my $z = 10 * random(10,10);
    my ($u, $s, $v) = $z->svd;
    my $rank = $s->where($s > 1e-10);
    print $rank;
    
  53. or download this
    my $z = long 5 * random(10,10);
    my $dim = 3;
    my (@out, $out);
    ...
    }
    $out = pdl @out;
    print $out;
    
  54. or download this
    my $z = 10 * random(20);
    my $n = 3;
    print $z->qsort->(-$n:);
    
  55. or download this
    my $z = random(5e7);
    $z ** 3;
    $z->ipow(3);
    $z->power(3,0);
    
  56. or download this
    my $z = pdl [0,1,2,3,15,16,32,64,128];
    my $bits = ($z->transpose & (2 ** xvals(9)));
    $bits->where($bits > 0) .= 1;
    print $bits;
    
  57. or download this
    my $z = long 2 * random(3,6);
    print $z->uniqvec;
    

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlmeditation [id://1213987]
Front-paged by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (8)
As of 2024-04-18 06:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found