Matrix in Python

Linear Algebra

Libraries ライブラリ

import numpy as np

Matrix generation 行列の生成

x = np.array([[1, 0], \
              [0, 1]])
print(type(x))
# <class 'numpy.ndarray'>
print(x)
# [[1 0]      
#  [0 1]]

x = np.array([[1, 2], \
              [3, 4], \
              [5, 6]])
print(x.shape)  # Number of rows and columns
# (3, 2)
print(x[2, 0])  # Element
# 5

x = np.array([[1, 2, 3], \
              [4, 5, 6], \
              [7, 8, 9]])
print(x[:, 1])  # Column
# [2 5 8]
print(x[1, :])  # Row
# [4 5 6]

Zero matrix ゼロ行列

print(np.zeros((2, 3)))
# [[0. 0. 0.] 
#  [0. 0. 0.]]

Matrix of all ones 全ての要素が1の行列

print(np.ones((2, 3)))
# [[1. 1. 1.] 
#  [1. 1. 1.]]

Identity matrix 単位行列

print(np.eye(3))
# [[1. 0. 0.] 
#  [0. 1. 0.] 
#  [0. 0. 1.]]

Transpose matrix 転置行列

x = np.array([[1, 2], \
              [3, 4]])
print(x.T)  # Transpose
# [[1 3]
#  [2 4]]

Diagonal matrix 対角行列

x = np.array([[1, 2], \
              [3, 4]])
print(np.diagonal(x))  # Diagonal
# [1 4]

Trace トレース

x = np.array([[1, 2, 3], \
              [4, 5, 6], \
              [7, 8, 9]])
print(np.trace(x))  # Trace
# 15

Determinant 行列式

theta = (1/4) * np.pi
r = np.array([[np.cos(theta), -np.sin(theta)], \
              [np.sin(theta), np.cos(theta)]])
print(np.linalg.det(r)) # Determinant
# 1.0

Inverse matrix 逆行列

theta = (1/4) * np.pi
r = np.array([[np.cos(theta), -np.sin(theta)], \
              [np.sin(theta), np.cos(theta)]])
print(np.linalg.inv(r)) # Inverse
# [[ 0.70710678  0.70710678]
#  [-0.70710678  0.70710678]]

Scalar multiplication スカラー倍

x = np.array([[1, 2], \
              [3, 4]])
print(2 * x)  # Scalar multiplication
# [[2 4]
#  [6 8]]

Matrix equality 行列の相等

i = np.eye(2)
iinv = np.linalg.inv(i)
print(np.array_equal(i, iinv))
# True

theta = (1/4) * np.pi
r = np.array([[np.cos(theta), -np.sin(theta)], \
              [np.sin(theta), np.cos(theta)]])
rinv = np.linalg.inv(r)
print(np.array_equal(r, rinv))
# False

Addition, Subtraction 加算、減算

i = np.eye(2)
x = np.array([[1, 2], \
              [3, 4]])
print(x + i)  # Addition
# [[2. 2.]
#  [3. 5.]]
print(x - i)  # Subtraction
# [[0. 2.]
#  [3. 3.]]

Dot product 内積

i = np.eye(2)
x = np.array([[1, 2], \
              [3, 4]])
prod = np.dot(x, i) # Dot product
print(prod)
# [[1. 2.]
#  [3. 4.]]

theta = (1/4) * np.pi
r = np.array([[np.cos(theta), -np.sin(theta)], \
              [np.sin(theta), np.cos(theta)]])
rinv = np.linalg.inv(r)
prod = np.dot(r, rinv)
print(prod)
# [[1.00000000e+00 1.01465364e-17]
#  [1.01465364e-17 1.00000000e+00]]

System of linear equations 連立一次方程式

a = np.array([[1, 1], [1, -1]])
b = np.array([3, 1])
x = np.linalg.solve(a, b) # Solve
print(x)
# [2. 1.]

EigenValue, EigenVector 固有値、固有ベクトル

a = np.array([[3, -1], [1, 1]])
eigenvalues, eigenvectors = np.linalg.eig(a)  # EigenValue, EigenVector
print(eigenvalues)
# [2.00000002 1.99999998]
print(eigenvectors)
# [[0.70710679 0.70710677]
#  [0.70710677 0.70710679]]

Reference 参考

NumPy
NumPyが広く利用される理由 強力な多次元配列、数値計算ツール群、相互運用性、高いパフォーマンス、オープンソース
The N-dimensional array (ndarray) — NumPy v2.2 Manual
Linear algebra (numpy.linalg) — NumPy v2.2 Manual
math --- 数学関数
このモジュールは、 C 標準で定義された数学関数へのアクセスを提供します。 これらの関数で複素数を使うことはできません。複素数に対応する必要があるならば、 cmath モジュールにある同じ名前の関数を使ってください。ほとんどのユーザーは複素...
Pythonによるデータ分析入門 第3版
NumPy、SciPy、pandas、Matplotlib、Jupyterをはじめ、高機能で使いやすい数学・科学計算用ライブラリが充実しているPythonは、科学計算、統計解析、機械学習のみならず、金融や経済分野でも広く利用されています。本...
明解演習 線形代数 - 共立出版
小寺 平治 著
タイトルとURLをコピーしました