📘

numpyによるベクトル演算・行列演算

2023/05/30に公開

numpyによるベクトルと行列の演算を学習

今回はnumpyを使用し、ベクトルや行列の演算を
動かしながら学習していきます。

numpyのベクトル(1次元配列)の算術演算

import numpy as np
x = np.array([1,2,3])
y = np.array([4,5,6])
x + y

出力結果 → array([5,7,9])
+, -,*,/すべて同じ表記でOK!

スカラー演算

数値を1つしか含んでいない0階テンソル(スカラー)を
ベクトルに対して四則演算を行うとすべての成分に対して演算が行われる!
処理のイメージはfor文のような感じ!

x = np.array([1,2,3,4,5])
y = np.array(10)
x + y

ベクトルの内積

ベクトル同士の成分の席の和を内積と呼びます。
例)
a = ( 2 3 ) と b = ( 4 5 ) の内積だと
a.b = ( 2 3 ) . ( 4 5 ) = 2.4 + 3.5 = 23
のように、第一成分同士と第二成分同士をかけて和を求める!

numpyの配列(NDArrayオブジェクト)には、
ベクトルの内積を求めるdot()関数が用意されているので、使用する

vec1 = np.array([2,3])
vec2 = np.array([4,5])

np.dot(vec1,vec2)

行列の演算

2階テンソルは行列をもっています。
行と列が同じ数のものを正方行列といいます。
例)2×2の行列、4×4の行列
片方がどちらか1だと(1列or1行)、2階テンソルではなくベクトルとなります!

また、行列に対してスカラー演算を行うと、
ベクトル同様にすべての成分に対して演算が行われます。

mtx = np.array([
    [1,2,3],
    [4,5,6],
    [7,8,9]],
    dtype = float)

mtx + 10

出力結果
array([[11.,12.,13.],
[14.,15.,16.],
[17.,18.,19.]])

行列のスカラー演算のうち、掛け算のことを行列の定数倍と呼びます。
ある数をかけて行列の全ての成分を○○倍します!

行列同士の足し算・引き算

行列同士の足し算と引き算は「同じ行と列の成分同士を計算」します。

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

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

a + b

出力結果↓
array([[5, 5],
[5, 5]])

アダマール積(掛け算)は成分ごとの積で、
対応する位置の値を掛け合わせて新しい行列を求めます。

その他の単語や関数

zeros()関数...ゼロ行列と呼ばれるすべての成分が0の行列を作成
対角行列...対角線で結ばれる成分のこと。(1,1)(2,2)など
identity()...単位行列と呼ばれる対角成分がすべて1である対角行列のこと
逆行列...行列は割り算が定義されていませんが、逆数をかけることで割り算の処理ができます
     行列に逆数をかける手段として使うのが逆行列です。
linalb.inv()...逆行列を求めることができるメソッド

所感

今回はnumpyの演算について学習しました。
簡単な数学から、順を追ってようやくわかる関数まで様々でした。
微分も取り組みましたが、機械学習にはそちらも大きくかかわってくるようですね。
またまとめていきます!

Discussion