Perl PDL:搜索向量是在数组中还是在矩阵中

时间:2019-02-27 12:30:59

标签: perl grep pdl

我尝试在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));

没有办法。

有什么需要帮助的人

2 个答案:

答案 0 :(得分: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 );

我仍在寻找文档。

答案 1 :(得分: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