読者です 読者をやめる 読者になる 読者になる

行列からの切り出し

APL/J言語
   ]x=:i.3 3
0 1 2
3 4 5
6 7 8
   ]y=:i.3
0 1 2
   ]z=:x ,"1 0 y
0 1 2 0
3 4 5 1
6 7 8 2

というような3x4の行列zから逆に3x3の行列xとベクトルyを切り出す方法を考えてみる。


解答

   }:"1 z
0 1 2
3 4 5
6 7 8
   x = }:"1 z
1 1 1
1 1 1
1 1 1
   {:"1 z
0 1 2
   y = {:"1 z
1 1 1

たぶん合ってると思います。
しかし{.}.{:}:は覚えにくいですね。
Referenceカードをみたらhead, behead, tail, curtailとかの名前がついている。
head => {.(ブレイスドット)
tail => {:(ブレイスコロン)
あたりをキーにして覚えようと思います。