筋肉で解決しないために。

日々出会うモノに対する考察をしたり、主に以下のテーマに関して書いています。 データサイエンス/人工知能/AI/機械学習/DeepLearning/Python//数学/統計学/統計処理

numpy入門4_「行列の入れ替えと基本行列計算」

こんにちは、ワタルです。

さっと見て、「あぁそうだったそうだった」と確認できるハンドブックのような存在を目指して。

第4回目、「行列の入れ替えと基本行列計算」です。

よろしくお願い致します。

おまじない

import numpy as np

転置行列を作る(行と列の入れ替え)

arr = np.arange(9).reshape((3,3))#arrayを作る
arr

>>>
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
arr.T #行列の転置

>>>
array([[0, 3, 6],
       [1, 4, 7],
       [2, 5, 8]])
arr.transpose()#transposeメソッドでも" .T "と同じく、行列の転置ができる

>>>
array([[0, 3, 6],
       [1, 4, 7],
       [2, 5, 8]])

引き数をとって、行列を入れ替える。

2次元配列の場合(0は行、1は列)

arr.transpose((0,1))

>>>
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
#行と列が入れ替わる
arr.transpose((1,0))

>>>
array([[0, 3, 6],
       [1, 4, 7],
       [2, 5, 8]])
#swapaxesでも行列を入れ替えができる。
#transposeと使い方は一緒。
arr.swapaxes(1,0)

>>>
array([[0, 3, 6],
       [1, 4, 7],
       [2, 5, 8]])

3次元配列の場合。

arr2 = np.arange(24).reshape(4,3,2) # 4×3×2の3次元配列。
arr2

>>>
array([[[ 0,  1],
        [ 2,  3],
        [ 4,  5]],

       [[ 6,  7],
        [ 8,  9],
        [10, 11]],

       [[12, 13],
        [14, 15],
        [16, 17]],

       [[18, 19],
        [20, 21],
        [22, 23]]])
arr2.transpose(2,1,0)# 2×3×4の3次元配列へ。

>>
array([[[ 0,  6, 12, 18],
        [ 2,  8, 14, 20],
        [ 4, 10, 16, 22]],

       [[ 1,  7, 13, 19],
        [ 3,  9, 15, 21],
        [ 5, 11, 17, 23]]])

行列の積(dot)

np.dot(arr.T, arr)

>>>
array([[45, 54, 63],
       [54, 66, 78],
       [63, 78, 93]])
#ちなみにdotは要素の掛け算ではありません。
#掛け算を試してみると。
arr.T * arr

>>>
array([[ 0,  3, 12],
       [ 3, 16, 35],
       [12, 35, 64]])
#np.dot(arr.T, arr)とは違うことがわかります

第5回はこちら

watarumon.hatenablog.com

それじゃー、また。