Pythonの行列は,2次元リストまたは2次元配列の形で実装することができます.Python Matrix の演算を行うには、Python NumPy モジュールをインポートする必要があります。
Python Matrix は、統計、データ処理、画像処理などの分野で必要不可欠です。
Python Matrixの作成
Python Matrixは、以下のいずれかの手法で作成することができます。
- リストを使用する方法
- arange() メソッドによるもの
- matrix()メソッドによるもの
1. リストを用いた行列の作成
numpy.array()`関数は、リストを入力として配列を作成することができる。
例えば、以下の様になります。
import numpy
input_arr = numpy.array([[ 10, 20, 30],[ 40, 50, 60]])
print(input_arr)
|
結果は以下の通りです。
[[10 20 30]
[40 50 60]]
|
上で見たように、出力は与えられた入力の集合をリスト形式で表した2次元の行列を表しています。
2. numpy.arange()」関数を使った行列の作成
numpy.arange()`関数とリスト入力を使って、Pythonで行列を作成することができます。
例えば、以下の様になります。
import numpy
print(numpy.array([numpy.arange(10,15), numpy.arange(15,20)]))
|
結果は以下の通りです。
[[10 11 12 13 14]
[15 16 17 18 19]]
|
3. numpy.matrix()関数」による行列の作成
Pythonで行列を作成するには、numpy.matrix()関数を使用します。
構文は以下の通りです。
numpy.matrix(input,dtype)
|
- 入力。input: 行列を作るために入力される要素。
- dtype: 対応する出力のデータ型.
例えば、以下の様になります。
import numpy as p
matA = p.matrix([[10, 20], [30, 40]])
print('MatrixA:, matA)
matB = p.matrix('[10,20;30,40]', dtype=p.int32) # Setting the data-type to int
print(', matB)
|
結果は、以下の通りになります。
MatrixA: [[10 20]
[30 40]]
MatrixB: [[10 20]
[30 40]]
|
Pythonで行列の足し算をします。
Matricesの加算操作は、以下の方法で行うことができます。
- 従来の方法
- 演算子「+」を使用する方法
1. 従来の方法
この伝統的な方法では、基本的にユーザーから入力を受け取り、forループ(行列の要素を巡回する)と「+」演算子を用いて加算演算を行う。
例えば、以下の様になります。
import numpy as p
ar1 = p.matrix([[11, 22], [33, 44]])
ar2 = p.matrix([[55, 66], [77, 88]])
res = p.matrix(p.zeros((2,2)))
print('Matrix ar1 :, ar1)
print(', ar2)
# traditional codefor x in range(ar1.shape[1]):
for y in range(ar2.shape[0]):
res[x, y] = ar1[x, y] + ar2[x, y]
print(', res)
|
注意:Matrix.shapeは、特定の行列の次元を返す。
結果は以下の通りです。
Matrix ar1 : [[11 22]
[33 44]]
Matrix ar2 : [[55 66]
[77 88]]
Result : [[ 66. 88.]
[ 110. 132.]]
|
2. 演算子「+」の使用
この方法は、LOC(コード行数)を減らし、コードを最適化するため、より良い効率を提供します。
例えば、以下の様になります。
import numpy as p
ar1 = p.matrix([[11, 22], [33, 44]])
ar2 = p.matrix([[55, 66], [77, 88]])
res = p.matrix(p.zeros((2,2)))
print('Matrix ar1 :, ar1)
print(', ar2)
res = ar1 + ar2 # using '+' operator
print(', res)
|
結果は、以下の通りになります。
Matrix ar1 : [[11 22]
[33 44]]
Matrix ar2 : [[55 66]
[77 88]]
Result : [[ 66 88]
[110 132]]
|
Pythonで行列の掛け算をします。
Pythonでの行列の乗算は、以下の方法で提供することができます。
- スカラー積
- 行列の積
スカラー積
スカラー積では、スカラー値/定数値を行列の各要素に乗算します。
スカラー値と入力された行列要素の乗算には、’ⅳ*’演算子が使用されます。
例えば、以下の様になります。
import numpy as p
matA = p.matrix([[11, 22], [33, 44]])
print("Matrix A:, matA)
print("Scalar Product of Matrix A:, matA * 10)
|
結果は以下の通りです。
Matrix A: [[11 22]
[33 44]]
Scalar Product of Matrix A: [[110 220]
[330 440]]
|
マトリクス製品
前述のように、スカラー倍算にのみ’ *’演算子を使用することができます。
Matrixの乗算を行うには、numpy.dot()関数を使用する必要があります。
numpy.dot()`関数はNumPyの配列をパラメータ値として受け取り、行列の乗算の基本的なルールに従って乗算を実行します。
例えば、以下の様になります。
import numpy as p
matA = p.matrix([[11, 22], [33, 44]])
matB = p.matrix([[2,2], [2,2]])
print("Matrix A:, matA)
print("Matrix B:, matB)
print("Dot Product of Matrix A and Matrix B:, p.dot(matA, matB))
|
結果は以下の通りです。
Matrix A: [[11 22]
[33 44]]
Matrix B: [[2 2]
[2 2]]
Dot Product of Matrix A and Matrix B:
[[ 66 66]
[154 154]]
|
Python 行列の引き算
演算子’-‘は、Python Matrixの減算を行うために使用されます。
例えば、以下の様になります。
import numpy as p
matA = p.matrix([[11, 22], [33, 44]])
matB = p.matrix([[2,2], [2,2]])
print("Matrix A:, matA)
print("Matrix B:, matB)
print("Subtraction of Matrix A and Matrix B:,(matA - matB))
|
結果は、以下の通りになります。
Matrix A: [[11 22]
[33 44]]
Matrix B: [[2 2]
[2 2]]
Subtraction of Matrix A and Matrix B:
[[ 9 20]
[31 42]]
|
Python マトリックスの分割
スカラー除算は、PythonのMatrixの要素に対して、’/’演算子を用いて実行することができます。
演算子は、Matrix の各要素をスカラー値/定数値で割ります。
例えば、以下の様になります。
import numpy as p
matB = p.matrix([[2,2], [2,2]])
print("Matrix B:, matB)
print("Matrix B after Scalar Division operation:,(matB/2))
|
結果は以下の通りです。
Matrix B: [[2 2]
[2 2]]
Matrix B after Scalar Division operation: [[ 1. 1.]
[ 1. 1.]]
|
Python 行列の転置法
行列の転置は基本的に、対応する対角線上で行列を反転させることを意味します。
つまり、入力行列の行と列を入れ替えます。
行は列になり、列は行になります。
例えば 例えば、次元が3×2、つまり3行2列の行列Aを考えてみましょう。
転置演算を行った後の行列 A の次元は、2×3、つまり 2 行 3 列になります。
Matrix.T` は基本的に、入力行列の転置を行い、転置演算の結果として新しい行列を生成します。
例えば、以下の様になります。
import numpy
matA = numpy.array([numpy.arange(10,15), numpy.arange(15,20)])
print("Original Matrix A:)
print(matA)
print(',matA.shape)
print(")
res = matA.T
print(res)
print(',res.shape)
|
結果は以下の通りです。
Original Matrix A:[[10 11 12 13 14]
[15 16 17 18 19]]
Dimensions of the original MatrixA: (2, 5)
Transpose of Matrix A: [[10 15]
[11 16]
[12 17]
[13 18]
[14 19]]
Dimensions of the Matrix A after performing the Transpose Operation: (5, 2)
|
上記のコードでは、2×5次元、すなわち2行5列の行列を作成しました。
転置演算を実行すると、結果の行列の寸法は5×2、すなわち5行と2列となる。
Python 行列の指数
行列の指数は要素ごとに計算されます。
すなわち、各要素の指数は、入力されたスカラー/定数値のべき乗に要素を上げることで計算されます。
例えば、以下の様になります。
import numpy
matA = numpy.array([numpy.arange(0,2), numpy.arange(2,4)])
print("Original Matrix A:)
print(matA)
print("Exponent of the input matrix:)
print(matA ** 2) # finding the exponent of every element of the matrix
|
結果は以下の通りです。
Original Matrix A:[[0 1]
[2 3]]
Exponent of the input matrix:
[[0 1]
[4 9]]
|
上記のコードでは、入力行列の各要素の指数を 2 の累乗で求めています。
NumPyのメソッドを用いた行列の乗算演算を行う。
NumPy の Matrix の乗算を行うには、以下の手法を用いることができる。
- multiply() メソッドの使用
- matmul()メソッドの使用
- dot() メソッドの使用 – この記事ですでにカバーされています。
この記事もチェック:NumPyの便利な線形代数メソッド(行列のランク,行列式,逆行列など)
方法1:multiply()メソッドを使用します。
numpy.multiply()`メソッドは、入力された行列に対して要素ごとの乗算を行う。
例えば、以下の様になります。
import numpy as p
matA = p.matrix([[10, 20], [30, 40]])
print('MatrixA:, matA)
matB = p.matrix('[10,20;30,40]', dtype=p.int32) # Setting the data-type to int
print(', matB)
print("Matrix multplication using numpy.matrix() method")
res = p.multiply(matA,matB)
print(res)
|
結果は、以下の通りになります。
MatrixA: [[10 20]
[30 40]]
MatrixB: [[10 20]
[30 40]]
Matrix multplication using numpy.matrix() method[[ 100 400]
[ 900 1600]]
|
方法2:matmul()メソッドを使用します。
numpy.matmul()`メソッドは入力行列に対して行列積を実行します。
例えば、以下の様になります。
import numpy as p
matA = p.matrix([[10, 20], [30, 40]])
print('MatrixA:, matA)
matB = p.matrix('[10,20;30,40]', dtype=p.int32) # Setting the data-type to int
print(', matB)
print("Matrix multplication using numpy.matmul() method")
res = p.matmul(matA,matB)
print(res)
|
結果は、以下の通りになります。
MatrixA: [[10 20]
[30 40]]
MatrixB: [[10 20]
[30 40]]
Matrix multplication using numpy.matmul() method[[ 700 1000]
[1500 2200]]
|
読者の皆さんには、NumPyの行列の掛け算を完全に理解するために、以下のチュートリアルに目を通すことを強くお勧めします。
NumPy 行列の転置
関数 numpy.transpose() は入力された行列に対して転置を行い、新しい行列を生成します。
例えば、以下の様になります。
import numpy
matA = numpy.array([numpy.arange(10,15), numpy.arange(15,20)])
print("Original Matrix A:)
print(matA)
print(',matA.shape)
print(")
res = matA.transpose()
print(res)
print(',res.shape)
|
結果は以下の通りです。
Original Matrix A:[[10 11 12 13 14]
[15 16 17 18 19]]
Dimensions of the original MatrixA: (2, 5)
Transpose of Matrix A: [[10 15]
[11 16]
[12 17]
[13 18]
[14 19]]
Dimensions of the Matrix A after performing the Transpose Operation: (5, 2)
|
読むことをお勧めします。
まとめ
この記事では、PythonのMatrixで実行される操作を理解し、NumPyのMatrixの操作についても見てきました。