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]]

今日はここまで。