对PERL PDL变量执行正则表达式
是否可以对n维变量执行正则表达式 例如,我可以通过执行以下操作向所有元素添加100对PERL PDL变量执行正则表达式,perl,pdl,Perl,Pdl,是否可以对n维变量执行正则表达式 例如,我可以通过执行以下操作向所有元素添加100 $a1 = pdl [1,2]; print $a1 + 100; 但是,如果我的数组是一组字符串,我想对其执行一些任务,该怎么办呢。例如,此操作失败: $a = pdl ['suze','david']; $a =~ s/suze/female/; print $a; 不确定这是否可能,但请提前感谢 重点是,这是一个perl扩展,专为科学和批量数字数据处理和显示而设计。所以它并不是专门用来操纵字符串的。当
$a1 = pdl [1,2];
print $a1 + 100;
但是,如果我的数组是一组字符串,我想对其执行一些任务,该怎么办呢。例如,此操作失败:
$a = pdl ['suze','david'];
$a =~ s/suze/female/;
print $a;
不确定这是否可能,但请提前感谢 重点是,这是一个perl扩展,专为科学和批量数字数据处理和显示而设计。所以它并不是专门用来操纵字符串的。当您尝试在一个琐事中迭代时:
use strict;
use warnings;
use PDL;
my $a = pdl ['suze','david'];
print $_ . "\n" foreach ($a->list);
您将获得:
Argument "suze" isn't numeric in subroutine entry at Basic/Core/Core.pm.PL (i.e. PDL::Core.pm) line 1296, <DATA> line 207.
0
0
Argument "david" isn't numeric in subroutine entry at Basic/Core/Core.pm.PL (i.e. PDL::Core.pm) line 1296, <DATA> line 207.
对于构造函数和STRING
pdl的字符串版本还允许您使用字符串bad、inf和nan,它将插入您想要的值(如果您使用bad,则设置bad标志)。你们可以混搭箱子,尽管你们不应该
回到您的主要问题,为什么对字符串使用
PDL
为什么不使用一个简单的数组呢
use strict;
use warnings;
use Data::Dumper;
my $a = ['suze','david'];
s/suze/female/ for @{$a};
print Dumper $a;
输出:
$VAR1 = [
'female',
'david'
];
作为Paulchenkiller答案的后续,PDL对字符串via有基本的支持。但是,PDL::Char数组中的每个字符串必须具有相同的长度,或者填充为null。您的示例将第一个条目的长度更改为比以前分配的长度更长的长度。这是无法对PDL::Char应用正则表达式的原因之一
此外,Perl的字符串几乎没有多余的内存,在数组中的元素上循环,当您将正则表达式应用于数组的每个成员时,成本应该不会太高。我认为PDL中没有正则表达式。我认为您必须将PDL数组转换为perl数组,然后进行正则表达式替换。为什么要对字符串使用
PDL
它不是为这个而设计的:PCool,甚至不知道这个附加组件存在:D
$VAR1 = [
'female',
'david'
];