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 code for 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の操作についても見てきました。