なぜ行列を使いたいのか?
行列を使うとたくさんの連立方程式を一つの式で表せる。行列表記がとても便利。
- リストとベクトルは違う!
a0 = [1,2,3] + [1,2,3] >>[1, 2, 3, 1, 2, 3]
- ベクトルはnumpyで
import numpy as np x1 = np.array([1,2,3]) print(x1) x2 = np.array([4,5,6]) print(x1 + x2) >>[1 2 3] >>[5 7 9]
- 連続した整数のベクトルの作成
print(np.arange(10)) print(np.arange(5,10)) >>[0 1 2 3 4 5 6 7 8 9] >>[5 6 7 8 9]
- 行列の定義
x3 = np.array([[1,2,3],[2,3,4]]) print(x3) >>[[1 2 3] [2 3 4]]
- 行列のサイズ
print(x3.shape) >>(2, 3)
- 要素が0や1の行列の作成
print(np.zeros(10)) print(np.zeros((2,10))) print(np.ones((2,10))) >>[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]] [[ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.] [ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]]
- 行列の積
行列の型に注意。計算できない場合あり。
行列の積( dot( ) ) と、要素同士の積の違いに注意。
A = np.array([[1,2,3],[-1,-2,-3]]) B = np.array([[4,-4],[5,-5],[6,-6]]) print(A.dot(B)) print(A*B) >>[[ 14 -14] [-14 14]] [[ 4 -8] [-5 10]]
I = np.identity(3) I2 = np.identity(4) print( I ) A2 = np.array([[1,2,3],[4,5,6],[7,8,9]]) print(A2.dot(I)) >>[[ 1. 0. 0.] [ 0. 1. 0.] [ 0. 0. 1.]] [[ 1. 2. 3.] [ 4. 5. 6.] [ 7. 8. 9.]]
C = np.array([[1,2],[3,4]]) invC = np.linalg.inv(C) print(invC) >>[[-2. 1. ] [ 1.5 -0.5]]
- 転置
D = np.array([[1,2,3],[4,5,6]]) print(D) print(D.T) >>[[1 2 3] [4 5 6]] [[1 4] [2 5] [3 6]]