perl - 如何从 PDL 矩阵中提取特定行?

标签 perl pdl

假设我有:

$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/

相关文章:

perl - 如何将 Data::Dumper 输出转换回 Perl 数据结构?

linux - 如何使用 awk 修改文本字段?

perl - 如何使用 pdl 创建序列?

perl - 是否有 PDL API 的符号实现?

regex - 我应该如何结合这些正则表达式?

perl - 将 perl 的排序函数包装在一个对象中

mysql - 我想在我的 mysql 查询中自动添加单引号

macos - 我该如何修复此 PDL 安装?

perl - 将 PDL 标量转换为 Perl 标量

perl - 未定义的子程序 &PDL::divide