Python 無料で独習 【超特訓】Numpy20本ノック 08

Python
この記事は約3分で読めます。

Numpy20本ノック

問題その15 行列の結合

つぎの行列を使って以下の項目に従い、結合を行ってください。

A = np.array([[0,1,-1],[2,4,-3],[5,-2,7]])
A
array([[ 0,  1, -1],
       [ 2,  4, -3],
       [ 5, -2,  7]])

B = np.array([[-2,0,1],[5,-1,2],[-6,3,4]])
B
array([[-2,  0,  1],
       [ 5, -1,  2],
       [-6,  3,  4]])

とりあえず、問題文の行列を定義しました。

そしてまずは縦方向の結合。
Numpyメソッドのvstack()というのを使うみたいです。
vstackのvは垂直を意味するverticalだそうです。

C = np.vstack((A,B))
C
array([[ 0,  1, -1],
       [ 2,  4, -3],
       [ 5, -2,  7],
       [-2,  0,  1],
       [ 5, -1,  2],
       [-6,  3,  4]])

次は横方向です。
こちらはnp.hstack() でこのhは水平を意味するHorizontalの略です。

D = np.hstack((A,B))
D
array([[ 0,  1, -1, -2,  0,  1],
       [ 2,  4, -3,  5, -1,  2],
       [ 5, -2,  7, -6,  3,  4]])

問題その16 行列の分解

先ほどの結合の部分で作成した行列をつかい
以下の項目で分解を行ってください。

まずは縦方向への分割です。メソッドの名前が
np.vsplitです。結合の時と同じでvは垂直を意味するverticalです。

同様に水平方向への2分割は hsplitです。

#Cを2分割
np.vsplit(C,2)
[array([[ 0,  1, -1],
        [ 2,  4, -3],
        [ 5, -2,  7]]),
 array([[-2,  0,  1],
        [ 5, -1,  2],
        [-6,  3,  4]])]

#Cを3分割
np.vsplit(C,3)
[array([[ 0,  1, -1],
        [ 2,  4, -3]]),
 array([[ 5, -2,  7],
        [-2,  0,  1]]),
 array([[ 5, -1,  2],
        [-6,  3,  4]])]

#Dを水平方向に2分割
np.hsplit(D,2)
[array([[ 0,  1, -1],
        [ 2,  4, -3],
        [ 5, -2,  7]]),
 array([[-2,  0,  1],
        [ 5, -1,  2],
        [-6,  3,  4]])]

コメント

タイトルとURLをコピーしました