我將使用基於一個索引 - 如果您想輸入,您可以設置「IO」。
軸規格中給出的尺寸是會受到影響的尺寸。也就是說,如果將第n維包圍起來,則秩將減小,因爲結果的形狀將是沒有第d維的原始形狀。
⍴a ← 2 3 4⍴⍬
2 3 4
⍴⊂[1]a
3 4
⍴⊂[2]a
2 4
⍴⊂[3]a
2 3
現在,沿着Ñ第N維的陣列將保留在保留尺寸的地方,但作爲含有(即包圍)它們,產生一個嵌套陣列的標量:
a ← 2 2 2⍴⍳8
a
1 2
3 4
5 6
7 8
⊂[1]a
┌→──┐ ┌→──┐
│1 5│ │2 6│
└───┘ └───┘
┌→──┐ ┌→──┐
│3 7│ │4 8│
└───┘ └───┘
⊂[axis]array
正在使用的底層算法是什麼 拆分數組?我已經畫出了幾張表,看看我是否可以爲其構建 直覺,但是我一直沒有能力,而且我還沒有能夠 在我查看的文檔中找到這些信息。
對於你的例子,一個簡單的直覺可能是想象兩張半透明的印有他們的表格。你把它們放在彼此後面,稍微偏斜。然後,想象一下,如果你在他們面前擺放光源,會投射到他們身後的牆上。那預測,每個單元格中有兩個值的平坦表格就是你的結果。
我可以想像在第一軸線包圍來表示子分片上它的深度數組,得到[[0 1] [2 3]] & [[4 5] [6 7]或我所能 看到它意味着在列上進行子分割,產生[[0 2] [4 6]] & [[1 3] [5 7]]。但當然它也沒有。 (⊂[1]A
做的 第二,
這不只是子切片 - 封裝返回一個嵌套的數組(除了簡單的標量),我不是誤解你的符號,或以下不明確:
1 2 3
1 2 3
⍴1 2 3
3 ⍝ rank 1, i.e. a vector
≡⍴1 2 3
1 ⍝ depth 1, i.e. a non-nested array
⊂1 2 3
┌→────┐
│1 2 3│
└─────┘
⍴⊂1 2 3 ⍝ rank 0, i.e. a scalar
≡⊂1 2 3
2 ⍝ depth >1, i.e. a nested array
什麼操作會先做?)
您可以沿着一組尺寸的封裝:
⊂[2 3]a
┌→──┐ ┌→──┐
↓1 2│ ↓5 6│
│3 4│ │7 8│
└───┘ └───┘
但是,上面Z ← ⊂[X]R
,⍴⍴Z ←→ (⍴⍴R)-⍴⍴X
作爲解釋。
非常感謝!我認爲我缺少的重要見解是它可能需要多個軸,並且它會返回一個rho-1向量數組而不是一個rho-1數組向量。我所猜測的[0] [1]&[2]其實是[1 2] [0 2]和[0 1]。真的應該檢查輸出的形狀,而不是假設'ngn'會在視覺上區分這兩種情況。 –
很高興幫助。我沒有使用NGN,所以我不確定它是否可以顯示這些框。嘗試尋找像'] boxing或'⎕display'的東西。這真的有助於瞭解這個東西。 – danlei
NGN APL僅使用原點零點([] IO 0),因此請務必相應地從所有軸規格(⊂[1 2] a)中取代⊂[2 3] a)中的一個。 – Lobachevsky