假设我构建了以下多维数组:
my @array; # don't need the empty list
my @other_array = (0 ... 10);
foreach my $i ( 0 .. 10 ) {
$array[$i] = [ @other_array[1..$#other_array] ];
}我想将这个多维数组的“列”收集到一个单独的数组中,
例如,如果我想要收集第一列中的项,我希望如下所示
my @other_array = ();
@other_array = $array[:][1]; # This does NOT work in Perl在Perl中有没有一种不用循环就能做到这一点的方法?
最终,我想要做的是获得多维数组中每一列的max数组。
PS:这个问题的灵感来自于另一个问题:Building and printing a multidimensional list in Perl without looping。
发布于 2012-09-13 01:48:09
我认为你想要:
my @other_array = map { $_->[1] } @array;另一种语言可能具有用于此操作的特殊语法,但它仍将在幕后执行循环。
发布于 2012-09-13 01:48:41
加map为好友
my @other_array = map $array[$_][1], 0 .. $#array;Slices section in perldoc perllol有更多的例子。
发布于 2012-09-13 03:06:47
对于您的示例,这可能是一个夸张的解决方案,但假设您计划使用大型多维数组(矩阵)来执行此操作,请使用PDL并执行transpose,然后切出所需的行。
https://stackoverflow.com/questions/12393641
复制相似问题