4

n次元PDL変数で正規表現を実行することは可能ですか?

たとえば、次のようにして、すべての要素に 100 を追加できます。

$a1 = pdl [1,2]; 
print $a1 + 100;

しかし、私の配列が、何らかのタスクを実行したい文字列の集まりである場合はどうでしょうか。たとえば、これは失敗します。

$a = pdl ['suze','david'];
$a =~ s/suze/female/;
print $a;

これが可能かどうかはわかりませんが、事前に感謝します。

4

2 に答える 2

3

ポイントは、PDL科学的および大量の数値データの処理と表示用に設計された 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.

POD を詳しく調べると、次のことがわかります。

$a = pdl(SCALAR|ARRAY REFERENCE|ARRAY|STRING);

コンストラクターとそれに続くテキストについてSTRING

pdlの文字列バージョンでは、文字列badinf、および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'
        ];
于 2014-06-10T19:21:46.673 に答える