Perl PDL: поиск, если вектор находится в массиве или в матрице - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь сделать grep как на матрице PDL или массиве Vector:

my @toto;
push(@toto, pdl(1,2,3));
push(@toto, pdl(4,5,6));
my $titi=pdl(1,2,3);
print("OK") if (grep { $_ eq $titi} @toto);

Я также пытался

my @toto;
push(@toto, pdl(1,2,3));
push(@toto, pdl(4,5,6));
my $titi=pdl(1,2,3);
print("OK") if (grep { $_ eq $titi} PDL::Matrix->pdl(\@toto));

Нет работ.

Любойпомогите пожалуйста

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Отказ от ответственности: я ничего не знаю о PDL.Я прочитал источник, чтобы понять это.

Есть функция PDL::all(), которую вы можете использовать вместе с перегруженным оператором сравнения ==.

use PDL;
my $foo = pdl(1,2,3);
my $bar = pdl(4,5,6);
my $qrr = pdl(1,2,3);

print "OK 1" if PDL::all( $foo == $bar );
print "OK 2" if PDL::all( $foo == $qrr );

Я все еще ищу документацию.

0 голосов
/ 27 февраля 2019

Вы можете использовать eq_pdl из Test::PDL:

use PDL;
use Test::PDL qw( eq_pdl );
my @toto;
push(@toto, pdl(1,2,3));
push(@toto, pdl(4,5,6));
my $titi = pdl(4,5,6);
print("OK\n") if (grep { eq_pdl( $_, $titi) } @toto);

Выход :

OK
...