3

我尝试在 PDL 矩阵或 Vector 数组上制作 grep :

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));

没有工作。

任何帮助请

4

2 回答 2

3

免责声明:我对 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 );

我仍在寻找文档。

于 2019-02-27T15:00:19.497 回答
0

您可以使用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
于 2019-02-27T14:57:52.057 回答