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

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

Numpy20本ノック

問題その7 四則演算

こちらの行列の四則演算をおこなってください。

上3つの演算にかんしては、なんとなくわかりそうなのですが、
アダマール積ってなに?(笑)

とりあえす、行列を定義します。
足し算と引き算はそのままです。

a= np.array([[1,3],[-2,4]])
b= np.array([[2,-1],[3,0]])

a+b
array([[3, 2],
       [1, 4]])

a-b
array([[-1,  4],
       [-5,  4]])

行列積はすこし違いまして
調べてみると、こんな感じで計算するみたいです。

めちゃくちゃ複雑です(笑)
こんな数式どこでつかうんだろう??
たぶん機械学習とかでつかうのかなぁ~(笑)
でこんな複雑な計算もpythonならサクサクッとできます。
書き方も普通に * で計算するわけではなく、

a @ b
もしくは
a.dot(b)
で計算できるそうです。

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

a @ b
array([[-36,  10],
       [ 21,  -6]])

a.dot(b)
array([[-36,  10],
       [ 21,  -6]])

アダマール積 とは 要素同士(同じ場所)の掛け算
といういみらしいです。
こちらの方がパッと見わかりやすいです。
a * bで計算できます。

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

問題その8 転置

こちらのベクトル・行列の転置を行ってください。


転置は.Tで行えます。

a = np.array([2,3,4])
a
array([2, 3, 4])
a.T
array([2, 3, 4])

なにも起こりません。
a = np.array([2,3,4])
だと一次元の値なので、横も縦も定まっていません。
なので一旦[]で囲って二次元の値に変えてから転置を行います。
a = np.array([[2,3,4]])

a = np.array([[2,3,4]])
a
array([[2, 3, 4]])
a.T
array([[2],
       [3],
       [4]])

ここからは、表題の問題と大きく変わってます(笑)
どうゆうわけかわかりませんが、回答動画では
B = np.array([[1.2,3.5,5.1],[-0.3,1.1,-4.5]])
の行列を転置することになります。

B = np.array([[1.2,3.5,5.1],[-0.3,1.1,-4.5]])
B.T
array([[ 1.2, -0.3],
       [ 3.5,  1.1],
       [ 5.1, -4.5]])

コメント

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