Как перебрать Perl PDL piddle? - PullRequest
       24

Как перебрать Perl PDL piddle?

4 голосов
/ 07 марта 2011

Самое близкое, что я получил, было что-то вроде

use PDL;
my $u = pdl [1,2,3,4];
my $dim = 4;
for(my $i=0; $i<$dim; $i++)
{
  print $u->flat->index($i), "\n";
}

Также, как я могу преобразовать [1,2,3,4] в piddle $u, могу ли я получить список (или список списков для матрицы) из $u?

Ответы [ 2 ]

4 голосов
/ 18 августа 2011

помимо использования собаки, здесь есть еще два варианта для вашего 1d pdl с использованием index и list есть также index2d

use PDL;
my $a = pdl(1 .. 4);
#use index
print $a->index($_), "\n" foreach (0 .. $a->nelem-1);
#use list
print $_ . "\n" foreach ($a->list);
4 голосов
/ 11 марта 2011

С мудростью монахов я нашел ответ: http://perlmonks.org/index.pl?node_id=892201

Думаю, я поделюсь этим здесь в своем первоначальном вопросе. Код выше можно переписать так:

use PDL;
my $u = pdl [1,2,3,4];
foreach ($u->dog)
{
  print $_, "\n";
}

Мудрость поставляется с заявлением об отказе от ответственности, которое dog() работает только на небольших опорах (объект).

...