NumPyの便利な線形代数メソッド(行列のランク,行列式,逆行列など)

スポンサーリンク

今回は、PythonのNumPy線形代数関数に注目します。

NumPyモジュールは、データを扱い、操作するためのさまざまな関数を提供します。

それは、配列データ構造にデータを作成し、格納することができます

さらに、データ値を分析し、操作するためのさまざまな関数を提供します。

スポンサーリンク

NumPy線形代数関数のリスト

1. NumPyモジュールが提供する行列関数

NumPyモジュールを使用すると、配列構造に対して線形代数的な行列関数を実行することができます

このトピックのコースでは、以下の関数を見ていきます。

  1. 行列のランク。numpy.linalg.matrix_rank() 関数を使用すると、配列のランクを計算することができます。
  2. 行列式。numpy.linalg.det() 関数を使用すると、配列を行列として扱い、行列式を計算することができます。
    1. 逆行列 inv()関数は、配列の逆行列を計算するのに使用します。
    1. 指数。numpy.linalg.matrix_power() 関数を使用すると、行列にべき乗値を与えて結果を取得することができます。

例えば、以下の様になります。

以下の例では、numpy.array()関数を使用して配列を作成しました。

さらに、その配列に対して上記の線形代数演算を行い、結果を表示しています。

import numpy
 
x = numpy.array([ [2, 8, 7],
                 [6, 1, 1],
                [4, -2, 5]])
  
print("Rank: ", numpy.linalg.matrix_rank(x))
det_mat = numpy.linalg.det(x)
print("
Determinant: "
,det_mat)
inv_mat = numpy.linalg.inv(x)
print("
Inverse: "
,inv_mat)
print("
Matrix raised to power y:
"
,
           numpy.linalg.matrix_power(x, 8))

結果は以下の通りです。

Rank:  3
 
Determinant:  -306.0
 
Inverse:  [[-0.02287582  0.17647059 -0.00326797]
 [ 0.08496732  0.05882353 -0.13071895]
 [ 0.05228758 -0.11764706  0.1503268 ]]
 
Matrix raised to power y:
 [[ 85469036  43167250 109762515]
 [ 54010090  32700701  75149010]
 [ 37996120  22779200  52792281]]

2. NumPyの配列による固有値

NumPyの線形代数関数にはlinalgクラスがあり、渡された配列の要素から固有値を計算するeigh()関数を持っています。

以下のシンタックスを見てください。

構文は以下の様な感じです。

numpy.linalg.eigh(array)

eigh() 関数は,複素数または実数の対称行列の固有値と固有ベクトルを返します.

例えば、以下の様になります。

from numpy import linalg as li
 
x = numpy.array([[2, -4j], [-2j, 4]])
 
res = li.eigh(x)
  
print("Eigen value:", res)

結果は以下の通りです。

Eigen value: (array([0.76393202, 5.23606798]), array([[-0.85065081+0.j        0.52573111+0.j        ],
       [ 0.        -0.52573111j0.        -0.85065081j]]))

3. ドット積

NumPyの線形代数関数では、多次元値だけでなくスカラー値に対してもドット演算を行うことができます。

1 次元のベクトル値に対してはスカラー倍算を実行します。

多次元配列/行列に対しては、データ値に対して行列の乗算を実行します。

構文は以下の様な感じです。

numpy.dot()

例えば、以下の様になります。

import numpy as np
 
sc_dot = np.dot(10,2)
print("Dot Product: ", sc_dot)
 
vectr_x = 1 + 2j
vectr_y = 2 + 4j
  
vctr_dot = np.dot(vectr_x, vectr_y)
print("Dot Product: ", vctr_dot)

結果は以下の通りです。

Dot Product:  20
Dot Product:  (-6+8j)

4. NumPyモジュールによる線形方程式の解法

NumPyの線形代数関数を使えば、線形代数のスカラー方程式を計算し、解くことも可能です。

numpy.linalg.solve() 関数は、ax=b という方程式で配列の値を解きます。

例えば、以下の様になります。

import numpy as np
 
x = np.array([[2, 4], [6, 8]])
  
y = np.array([2, 2])
  
print(("Solution of linear equations:",
      np.linalg.solve(x, y)))

結果は以下の通りです。

('Solution of linear equations:', array([-1.1.]))

まとめ

何か疑問があれば、お気軽にコメントください。

Pythonプログラミングに関連するこのような記事のために、私たちと一緒にご滞在ください。

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