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のリスト
    F ← ⥊<˘