NumPy で線形代数

Last update: 2016-05-04

[期間限定記事] オンライン学習サイト Udemy で Python とデータサイエンスを学ぼう *割引中1,200円*

このページでは、NumPy を用いて線形代数 (Linear Algebra) の計算を解く方法について解説します。

ベクトルのドット積 (点乗積)

ドット積 (a・b) は、np.dot(a, b) で計算できます。
ドット積は、1 次元配列ではベクトルの内積、2 次元配列では行列の積と同じ結果になります。

サンプルコード

実行結果


ベクトルの内積

ベクトルの内積 (a・b) は np.inner(a, b) のようにして計算できます。

サンプルコード

実行結果


ベクトルの外積

ベクトルの外積 (a×b) は、np.outer(a, b) のようにして計算できます。

サンプルコード

実行結果


単位行列 (identity array)

対角成分が1でそれ以外が全て0の行列 (単位行列) は、 例えば、N次の単位行列の場合、np.identity(N)で作成できます。

サンプルコード

実行結果


固有値、固有ベクトル

固有値と固有ベクトルの計算は、numpy.linalg パッケージ (本例では、LAとして読み込み) に含まれる、LA.eig() を用いて計算できます。
なお、固有ベクトルは正規化 (大きさ= 1) された状態で、出力されます。

サンプルコード

実行結果

固有値のみを求める場合は、LA.eigvals() を用いて計算できます。

サンプルコード

実行結果


行列式の値 (determinant)

行列式の値は、np.linalg.detを用いて計算できます。内部的には、LU 分解で計算しているようです。

サンプルコード

実行結果


逆行列 (Inverse Matrix)

逆行列は、np.linalg.inv()で求めることができます。

サンプルコード

実行結果


行列式のランク (階数)

Rank (行列の階数) は、np.linalg.matrix_rank 関数にて算出できます。

サンプルコード

実行結果


零行列

零行列 (全ての成分が 0) の行列は np.zeros() にて作成できます。

サンプルコード

実行結果


ノルム

ベクトル a = [1,2,3,4] のノルム ||a||は、LA.norm() を利用して計算できます。

サンプルコード

実行結果


参考・出典:Linear algebra (numpy.linalg) — NumPy v1.10 Manual

See also