python_cookbook

Python Cookbook [Performing Matrix and Linear Algebra Calculations : 行列、線形代数計算の実行] 投稿一覧へ戻る

Tags: matrix , linear algebra , python , cookbook , numpy

Published 2020年4月13日19:57 by T.Tsuyoshi

# Problem:
# 行列の乗算、行列式を求める、一次方程式を解くといった行列および線形代数上の演算を実行したい。

# Solution:
# NumPy ライブラリの matrix オブジェクトを利用します。
# 行列は array オブジェクトと似通っていますが、線形代数学の規則に基づき演算を実行します。

import numpy as np
m = np.matrix([[1, -2, 3], [0, 4, 5], [7, 8, -9]])
m
# matrix([[ 1, -2, 3],
# [ 0, 4, 5],
# [ 7, 8, -9]])

# 転置行列を返します
m.T
# matrix([[ 1, 0, 7],
# [-2, 4, 8],
# [ 3, 5, -9]])

# 逆行列を返します
m.I
# matrix([[ 0.33043478, -0.02608696, 0.09565217],
# [-0.15217391, 0.13043478, 0.02173913],
# [ 0.12173913, 0.09565217, -0.0173913 ]])

# ベクターを定義し乗算を実行します
v = np.matrix([[2], [3], [4]])
v
# matrix([[2],
# [3],
# [4]])
m * v
# matrix([[ 8],
# [32],
# [ 2]])

# numpy.linalg サブパッケージを利用すればより多種の演算を実行できます。
import numpy.linalg

# 行列式を求めます
numpy.linalg.det(m)
# -229.99999999999983

# 固有値を求めます
numpy.linalg.eigvals(m)
# array([-13.11474312, 2.75956154, 6.35518158])

# mx = v における x を求めます
x = numpy.linalg.solve(m, v)
x
# matrix([[0.96521739],
# [0.17391304],
# [0.46086957]])
m * x
# matrix([[2.],
# [3.],
# [4.]])
v
# matrix([[2],
# [3],
# [4]])

# Machine Learning (機械学習) の勉強をしていると好き嫌い、得意苦手にかかわらずどうしても線形代数の知識が多かれ少なかれ必要になってきます。
# Python において行列やベクターの演算を行ううえでの第一の友はやはり NumPy でしょう。
# がんばって勉強するしかありませんね。

この投稿をメールでシェアする

0 comments

コメントはまだありません。

コメントを追加する(不適切と思われるコメントは削除する場合があります)