4.2 配列変形系関数
Transpose '⍉
'
𝕨⍉𝕩
はleading axisの軸とrank=𝕨の軸とを入れ替える。
ここでrankはleading axisを基点0として数えるので注意。
従って、leading axis のrankは常に0であり、最下位のrankは¯1+=𝕨
となる。
monadic applicationでは𝕨=¯1+=𝕩
と見做される。
Finally, it's worth noting that, as monadic Transpose moves the first axis to the end, it's equivalent to Reorder Axes with a "default" left argument: (=-1˙)⊸⍉.
→ BQN/doc/transpose.html#Reorder Axes
なお(=-1˙)
は1を引く3-train。
m ← ⥊⟜(↕×´)2‿3‿5
┌─
╎ 0 1 2 3 4
5 6 7 8 9
10 11 12 13 14
15 16 17 18 19
20 21 22 23 24
25 26 27 28 29
┘
=m
3
⍉m # leading axitと最下位軸の交換
┌─
╎ 0 15
1 16
2 17
3 18
4 19
5 20
6 21
7 22
8 23
9 24
10 25
11 26
12 27
13 28
14 29
┘
0⍉m # leading axis = 0なので何も起こらない
┌─
╎ 0 1 2 3 4
5 6 7 8 9
10 11 12 13 14
15 16 17 18 19
20 21 22 23 24
25 26 27 28 29
┘
1⍉m # leading axisとその直下の軸の交換(最下位軸には影響なし)
┌─
╎ 0 1 2 3 4
15 16 17 18 19
5 6 7 8 9
20 21 22 23 24
10 11 12 13 14
25 26 27 28 29
┘
2⍉m # leading axisと最下位軸の交換
┌─
╎ 0 15
1 16
2 17
3 18
4 19
5 20
6 21
7 22
8 23
9 24
10 25
11 26
12 27
13 28
14 29
┘
3⍉m # rank = 3なので3軸はない
Error: ⍉: Axis 3 does not exist (3≡=𝕩)
at 3⍉m
^
設問1
Reshape '⥊
'を使わずに⟨"ABC","DEFG","HIJ"⟩
を以下のshapeに変換せよ。
┌─
╵ "ABC"
"DEFG"
"HIJ"
┘
設問2
Reshape '⥊
'を使わずに"ABCD"
を以下のshapeに変換せよ。
┌─
╵ "ABCD"
┘
設問🧑🎓
以下のrank=2の配列m
から示した出力を得る関数F
を定義せよ。
m ← [
⟨0,0,1⟩
⟨0,2,0⟩
⟨3,0,0⟩
⟨1,2,7⟩
]
F m
⟨ ⟨0 0 1⟩ ⟨0 2 0⟩ ⟨3 0 0⟩ ⟨1 2 7⟩⟩ # これはdepth=2のリスト