Antik のマニュアルには、行列にはgrid:subgrid
とがありますgrid:slice
が、ベクトルには何も見つかりませんでした。ベクトルgrid:subgrid
grid:slice
には適用できません。エラーがあります。
アップデート
今、私は(subseq (grid:copy-to vec 'array) 0 3
これを行うために使用する必要がありますが、それはトリッキーです...
Antik のマニュアルには、行列にはgrid:subgrid
とがありますgrid:slice
が、ベクトルには何も見つかりませんでした。ベクトルgrid:subgrid
grid:slice
には適用できません。エラーがあります。
今、私は(subseq (grid:copy-to vec 'array) 0 3
これを行うために使用する必要がありますが、それはトリッキーです...
grid:slice
ベクトルで使用できます:
CL-USER> (grid:slice #(1 2 3 4 5) '((:range 0 2)))
;=> #(1.0 2.0 3.0)
— 関数: 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 グリッド ディメンションの開始とキーの宛先ドロップ
マトリックスの行やブロックなど、既存のグリッドのブロックからグリッドを作成します。ディメンションはサブグリッドのディメンションを示し、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)