假设我有:
$a = [
[1, 0, 1]
[0, 1, 0]
[0, 1, 1]
]
我想提取所有行
$row[2] == 1
.我得到的 piddle 看起来像:$b = [
[1, 0, 1]
[0, 1, 1]
]
这可以用 PDL 实现吗?
最佳答案
您需要使用 which
生成矩阵的索引列表,其在第三列中的值为 1
which($aa->index(2) == 1)
并将其传递给
dice_axis
,它将选择具有给定索引的行。轴 0 是列,轴 1 是行,因此代码如下所示use strict;
use warnings 'all';
use PDL;
my $aa = pdl <<__END_PDL__;
[
[1, 0, 1]
[0, 1, 0]
[0, 1, 1]
]
__END_PDL__
my $result = $aa->dice_axis(1, which($aa->index(2) == 1));
print $result;
输出
[
[1 0 1]
[0 1 1]
]
关于perl - 如何从 PDL 矩阵中提取特定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51864283/