Pythonによる行列の生成および四則演算
今日は行列の生成と四則演算を行う。
行列の生成
import numpy as np list_a = [0,1,2,3,4] list_b = [5,6,7,8,9] list_c = [10,11,12,13,14] matrix_a = np.array([list_a,list_b,list_c]) print(matrix_a)
[[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]]
3×5行列が生成できた。
txt,csvファイルからの読み取り
以下のようなcsvファイルから、これを読み取って行列にする。
0,1,2,3 4,5,6,7 8,9,10,11
import numpy as np matrix_a = np.genfromtxt('test.csv', delimiter=',', dtype=float) print(matrix_a)
今回は浮動小数点dtype=float
として読み込んでみる。
[[ 0. 1. 2. 3.] [ 4. 5. 6. 7.] [ 8. 9. 10. 11.]]
単位行列、零行列の生成
零行列は
import numpy as np matrix_a = np.zeros((3,3)) print(matrix_a)
[[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]
単位行列は
import numpy as np matrix_a = np.eye(3) print(matrix_a)
[[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]]
で生成できる。
行列の四則演算
基本的には配列の計算と同じ
import numpy as np list_a = [0,1,2,3,4] list_b = [5,6,7,8,9] list_c = [10,11,12,13,14] matrix_a = np.array([list_a,list_b,list_c]) matrix_a = matrix_a + 1 print(matrix_a)
[[ 1 2 3 4 5] [ 6 7 8 9 10] [11 12 13 14 15]]
単純に数値を足すと全要素に対して足し算される。他の演算に関しても同様。
行列同士の演算は、行列の演算則に従うが、積に注意。
import numpy as np list_a = [0,1] list_b = [2,3] matrix_a = np.array([list_a,list_b]) matrix_b = np.array([list_b,list_a]) matrix_c = matrix_a * matrix_b print(matrix_c)
と書くと各要素同士を掛け合わせてしまう。
[[0 3] [0 3]]
行列の演算をするときは
import numpy as np list_a = [0,1] list_b = [2,3] matrix_a = np.array([list_a,list_b]) matrix_b = np.array([list_b,list_a]) matrix_c = np.dot(matrix_a,matrix_b) print(matrix_c)
としなければならない。
[[0 1] [4 9]]
もしくは、
import numpy as np list_a = [0,1] list_b = [2,3] matrix_a = np.matrix([list_a,list_b]) matrix_b = np.matrix([list_b,list_a]) matrix_c = matrix_a * matrix_b print(matrix_c)
とnp.matrix
で行列を生成する方法でもよい。
[[0 1] [4 9]]
今日はここまで。