0

Antik のマニュアルには、行列にはgrid:subgrid​​ とがありますgrid:sliceが、ベクトルには何も見つかりませんでした。ベクトルgrid:subgrid grid:sliceには適用できません。エラーがあります。

アップデート

今、私は(subseq (grid:copy-to vec 'array) 0 3これを行うために使用する必要がありますが、それはトリッキーです...

4

1 に答える 1

3

グリッド:ベクトルによるスライス

grid:sliceベクトルで使用できます:

CL-USER> (grid:slice #(1 2 3 4 5) '((:range 0 2)))
;=> #(1.0 2.0 3.0)

のドキュメントgrid:sliceから:

— 関数: grid:slice グリッド インデックス選択 &key 宛先ドロップ

グリッドからスライスを選択します。index-selection は、グリッドのランクに等しい長さのリストです。各要素は次のいずれかである必要があります: 選択するインデックスを示すインデックス :all インデックスを選択する場合は範囲​​全体を示す :rev インデックスを逆順に選択する場合は範囲​​全体を示す

(:range start end stride)、選択するインデックスの範囲を示します。stride を省略すると、1 と見なされます。

(:select value …)、選択する明示的な値を示します。

それに基づいて、#(1 2 3 4 5)ランクが 1 であるため、index-selection は長さ 1 のリストである必要があり、単一の要素は形式のリスト、(:range start end [stride])この場合は(:range 0 2)です。

グリッド:ベクトルを含むサブグリッド

grid:subgridベクターでも使用できます。

CL-USER> (grid:subgrid #(1 2 3 4 5) '(3) '(2))
;=> #(3.0 4.0 5.0)

のドキュメントgrid:subgridから:

— 関数: grid:subgrid グリッド ディメンションの開始とキーの宛先ドロップ

マトリックスの行やブロックなど、既存のグリッドのブロックからグリッドを作成します。ディメンションはサブグリッドのディメンションを示し、start はすべてのインデックス値がゼロのサブグリッド要素に対応する各インデックスの最小値を示します。drop が true の場合、すべてのシングルトン軸が削除されます。

私は Antik の用語にあまり詳しくありませんが、ベクトルの場合、dimension引数は抽出する要素の数のリストであり、start引数はどこから開始するかのリストのようです。ここでの私の理解は、いくつかの実験に基づいています。

CL-USER> (grid:subgrid #(1 2 3 4 5 6 7 8 9 10) '(3) '(2))
;=> #(3.0 4.0 5.0)
CL-USER> (grid:subgrid #(1 2 3 4 5 6 7 8 9 10) '(3) '(4))
;=> #(5.0 6.0 7.0)
CL-USER> (grid:subgrid #(1 2 3 4 5 6 7 8 9 10) '(2) '(5))
;=> #(6.0 7.0)
于 2013-09-14T18:47:27.990 に答える