[英]How do I extract specific rows from a PDL matrix?
假設我有:
$a = [
[1, 0, 1]
[0, 1, 0]
[0, 1, 1]
]
我想提取$row[2] == 1
所有行。 我的結果如下:
$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]
]
我是PDL
新手,但似乎你可以使用which
結果作為掩碼。
您需要先transpose
原始變量,然后在使用slice
后將其transpose
回來。
pdl> $a = pdl [[1, 0, 1], [0, 1, 0], [0, 1, 1]]
pdl> p which($a(2) == 1)
[0 2]
pdl> p $a->transpose
[
[1 0 0]
[0 1 1]
[1 0 1]
]
pdl> p $a->transpose->slice(which($a(2) == 1))->transpose
[
[1 0 1]
[0 1 1]
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.