Python 行列:転置、乗算、NumPy 配列の例
Python マトリックスとは
Python マトリックスは、行と列に格納されたデータの特殊な 2 次元長方形配列です。行列のデータは、数値、文字列、式、記号などです。行列は、数学および科学計算で使用できる重要なデータ構造の 1 つです。
この Python チュートリアルでは、次のことを学びます:
- Python マトリックスとは?
- Python マトリックスはどのように機能しますか?
- ネストされたリスト データ タイプを使用して Python マトリックスを作成する
- リストを使用して Python Matrix 内のデータを読み取る。
- 例 2:各行から最後の要素を読み取る。
- 例 3:マトリックスの行を印刷するには
- ネストされたリストを使用してマトリックスを追加する
- ネストされたリストを使用した行列の乗算
- Python Numpy パッケージの配列を使用して Python マトリックスを作成する
- Numpy.Array() を使用した行列演算
- NumPy マトリックスへのアクセス
Python マトリックスはどのように機能しますか?
マトリックス形式の 2 次元配列内のデータは次のようになります。
ステップ 1)
2×2の行列を示しています。 2 行 2 列です。マトリックス内のデータは数値です。 row1 の値は 2、3、row2 の値は 4、5 です。列、つまり、col1 の値は 2、4、col2 の値は 3、5 です。
ステップ 2)
2×3の行列を示しています。 2 つの行と 3 つの列があります。最初の行内のデータ、つまり行 1 の値は 2、3、4 で、行 2 の値は 5、6、7 です。列 col1 の値は 2、5、col2 の値は 3、6、col3 の値は 4、7 です。
同様に、Python の nxn マトリックス内にデータを格納できます。行列のような加算、減算、乗算などで多くの演算を実行できます。
Python には、行列データ型を実装する簡単な方法がありません。
Python マトリックスは配列を利用しており、同じことが実装できます。
- ネストされたリスト データ タイプを使用して Python マトリックスを作成する
- Python Numpy パッケージの配列を使用して Python マトリックスを作成する
ネストされたリスト データ型を使用して Python マトリックスを作成する
Python では、配列は list データ型を使用して表されます。それでは、リストを使用して python マトリックスを作成します。
以下に示すように、3×3 マトリックスを作成します。
- マトリックスには 3 行 3 列があります。
- リスト形式の最初の行は次のようになります:[8,14,-6]
- リストの 2 行目:[12,7,4]
- リストの 3 行目:[-11,3,21]
すべての行と列を含むリスト内のマトリックスは次のとおりです:
List = [[Row1], [Row2], [Row3] ... [RowN]]
したがって、上記のマトリックスに従って、マトリックス データを含むリスト タイプは次のようになります。
M1 = [[8, 14, -6], [12,7,4], [-11,3,21]]
リストを使用して Python Matrix 内のデータを読み取る
上で定義した行列を使用します。この例では、データを読み取り、行列を出力し、各行の最後の要素を表示します。
例:マトリックスを印刷するには
M1 = [[8, 14, -6], [12,7,4], [-11,3,21]] #To print the matrix print(M1)
出力:
The Matrix M1 = [[8, 14, -6], [12, 7, 4], [-11, 3, 21]]
例 2:各行から最後の要素を読み取る
M1 = [[8, 14, -6], [12,7,4], [-11,3,21]] matrix_length = len(M1) #To read the last element from each row. for i in range(matrix_length): print(M1[i][-1])
出力:
-6 4 21
例 3:マトリックスの行を印刷するには
M1 = [[8, 14, -6], [12,7,4], [-11,3,21]] matrix_length = len(M1) #To print the rows in the Matrix for i in range(matrix_length): print(M1[i])
出力:
[8, 14, -6] [12, 7, 4] [-11, 3, 21]
ネストされたリストを使用してマトリックスを追加する
与えられた 2 つの行列を簡単に追加できます。ここでの行列はリスト形式になります。与えられた行列を追加するように注意する例に取り組みましょう.
マトリックス 1:
M1 = [[8, 14, -6], [12,7,4], [-11,3,21]]
マトリックス 2 :
M2 = [[3, 16, -6], [9,7,-4], [-1,3,13]]
Last は、M1 + M2 の結果を格納する行列を初期化します。
マトリックス 3 :
M3 = [[0,0,0], [0,0,0], [0,0,0]]
例:マトリックスの追加
さらに、行列は、指定された両方の行列をループする for ループを使用します。
M1 = [[8, 14, -6], [12,7,4], [-11,3,21]] M2 = [[3, 16, -6], [9,7,-4], [-1,3,13]] M3 = [[0,0,0], [0,0,0], [0,0,0]] matrix_length = len(M1) #To Add M1 and M2 matrices for i in range(len(M1)): for k in range(len(M2)): M3[i][k] = M1[i][k] + M2[i][k] #To Print the matrix print("The sum of Matrix M1 and M2 = ", M3)
出力:
The sum of Matrix M1 and M2 = [[11, 30, -12], [21, 14, 0], [-12, 6, 34]]
ネストされたリストを使用した行列の乗算
行列を乗算するには、以下のコードに示すように、両方の行列で for ループを使用できます。
M1 = [[8, 14, -6], [12,7,4], [-11,3,21]] M2 = [[3, 16, -6], [9,7,-4], [-1,3,13]] M3 = [[0,0,0], [0,0,0], [0,0,0]] matrix_length = len(M1) #To Multiply M1 and M2 matrices for i in range(len(M1)): for k in range(len(M2)): M3[i][k] = M1[i][k] * M2[i][k] #To Print the matrix print("The multiplication of Matrix M1 and M2 = ", M3)
出力:
The multiplication of Matrix M1 and M2 = [[24, 224, 36], [108, 49, -16], [11, 9, 273]]
Python Numpy パッケージの配列を使用して Python 行列を作成
Python ライブラリ Numpy は、配列の処理に役立ちます。 Numpy は、リストに比べて配列を少し速く処理します。
Numpy を使用するには、最初に Numpy をインストールする必要があります。 Numpy をインストールするには、以下の手順に従ってください。
ステップ 1)
Numpy をインストールするコマンドは次のとおりです:
pip install NumPy
ステップ 2)
コードで Numpy を利用するには、インポートする必要があります。
import NumPy
ステップ 3)
以下に示すように、エイリアスを使用して Numpy をインポートすることもできます。
import NumPy as np
Numpy の array() メソッドを使用して Python 行列を作成します。
例 :Python マトリックスを作成するための Numpy の配列
import numpy as np M1 = np.array([[5, -10, 15], [3, -6, 9], [-4, 8, 12]]) print(M1)
出力:
[[ 5 -10 15] [ 3 -6 9] [ -4 8 12]]
Numpy.Array() を使用した行列演算
実行できる行列演算は、加算、減算、乗算、転置、行列の行と列の読み取り、行列のスライスなどです。すべての例で、array() メソッドを使用します。
行列加算
行列の加算を実行するには、numpy.array() を使用して 2 つの行列を作成し、(+) 演算子を使用して加算します。
例:
import numpy as np M1 = np.array([[3, 6, 9], [5, -10, 15], [-7, 14, 21]]) M2 = np.array([[9, -18, 27], [11, 22, 33], [13, -26, 39]]) M3 = M1 + M2 print(M3)
出力:
[[ 12 -12 36] [ 16 12 48] [ 6 -12 60]]
行列減算
行列の減算を実行するには、numpy.array() を使用して 2 つの行列を作成し、(-) 演算子を使用してそれらを減算します。
例:
import numpy as np M1 = np.array([[3, 6, 9], [5, -10, 15], [-7, 14, 21]]) M2 = np.array([[9, -18, 27], [11, 22, 33], [13, -26, 39]]) M3 = M1 - M2 print(M3)
出力:
[[ -6 24 -18] [ -6 -32 -18] [-20 40 -18]]
行列のかけ算
まず、numpy.arary() を使用して 2 つの行列を作成します。それらを乗算するには、numpy dot() メソッドを使用できます。 Numpy.dot() は、行列 M1 と M2 の内積です。 Numpy.dot() は 2D 配列を処理し、行列の乗算を実行します。
例:
import numpy as np M1 = np.array([[3, 6], [5, -10]]) M2 = np.array([[9, -18], [11, 22]]) M3 = M1.dot(M2) print(M3)
出力:
[[ 93 78] [ -65 -310]]
行列転置
行列の転置は、行を列に、列を行に変更することによって計算されます。 Numpy の transpose() 関数を使用して、行列の転置を計算できます。
例:
import numpy as np M1 = np.array([[3, 6, 9], [5, -10, 15], [4,8,12]]) M2 = M1.transpose() print(M2)
出力:
[[ 3 5 4] [ 6 -10 8] [ 9 15 12]]
行列のスライス
スライスは、指定された開始/終了インデックスに基づいて、マトリックスから要素を返します。
- スライスの構文は – [start:end]
- 開始インデックスが指定されていない場合は、0 と見なされます。たとえば、[:5] は [0:5] を意味します。
- 末尾が渡されない場合は、配列の長さと見なされます。
- 開始/終了が負の値の場合、スライスは配列の最後から行われます。
行列のスライスに取り組む前に、単純な配列にスライスを適用する方法を理解しましょう。
import numpy as np arr = np.array([2,4,6,8,10,12,14,16]) print(arr[3:6]) # will print the elements from 3 to 5 print(arr[:5]) # will print the elements from 0 to 4 print(arr[2:]) # will print the elements from 2 to length of the array. print(arr[-5:-1]) # will print from the end i.e. -5 to -2 print(arr[:-1]) # will print from end i.e. 0 to -2
出力:
[ 8 10 12] [ 2 4 6 8 10] [ 6 8 10 12 14 16] [ 8 10 12 14] [ 2 4 6 8 10 12 14]
次に、マトリックスにスライスを実装しましょう。マトリックスでスライスを実行するには
構文は M1[row_start:row_end, col_start:col_end]
になります。- 最初の開始/終了は、行列の行を選択するための行です。
- 2 番目の始点/終点は列、つまりマトリックスの列を選択するためのものです。
使用する行列 M1 t は次のとおりです。
M1 = np.array([[2, 4, 6, 8, 10], [3, 6, 9, -12, -15], [4, 8, 12, 16, -20], [5, -10, 15, -20, 25]])
全部で4行あります。インデックスは 0 から 3 までです。0 th 行は [2,4,6,8,10]、1 st です 行は [3,6,9,-12,-15] で、その後に 2 nd が続きます そして3番目 .
行列 M1 には 5 つの列があります。インデックスは 0 から 4 までです。0 th 列の値は [2,3,4,5]、1 st です 列の値は [4,6,8,-10] で、その後に 2 が続きます 、3 、4 th 、および 5 th .
以下は、スライスを使用して行列から行と列のデータを取得する方法を示す例です。この例では、1 st を印刷しています。 そして2 行、列の場合は、1 列目、2 列目、3 列目が必要です。その出力を取得するために使用したもの:M1[1:3, 1:4]
例:
import numpy as np M1 = np.array([[2, 4, 6, 8, 10], [3, 6, 9, -12, -15], [4, 8, 12, 16, -20], [5, -10, 15, -20, 25]]) print(M1[1:3, 1:4]) # For 1:3, it will give first and second row. #The columns will be taken from first to third.
出力:
[[ 6 9 -12] [ 8 12 16]]
例 :すべての行と 3 列目を印刷するには
import numpy as np M1 = np.array([[2, 4, 6, 8, 10], [3, 6, 9, -12, -15], [4, 8, 12, 16, -20], [5, -10, 15, -20, 25]]) print(M1[:,3]) # This will print all rows and the third column data.
出力:
[ 8 -12 16 -20]
例:最初の行とすべての列を印刷するには
import numpy as np M1 = np.array([[2, 4, 6, 8, 10], [3, 6, 9, -12, -15], [4, 8, 12, 16, -20], [5, -10, 15, -20, 25]]) print(M1[:1,]) # This will print first row and all columns
出力:
[[ 2 4 6 8 10]]
例:最初の 3 行と最初の 2 列を印刷するには
import numpy as np M1 = np.array([[2, 4, 6, 8, 10], [3, 6, 9, -12, -15], [4, 8, 12, 16, -20], [5, -10, 15, -20, 25]]) print(M1[:3,:2])
出力:
[[2 4] [3 6] [4 8]]
NumPy マトリックスへのアクセス
スライスがどのように機能するかを見てきました。それを考慮して、マトリックスから行と列を取得する方法を説明します。
行列の行を印刷するには
この例では、マトリックスの行を出力します。
例:
import numpy as np M1 = np.array([[3, 6, 9], [5, -10, 15], [4,8,12]]) print(M1[0]) #first row print(M1[1]) # the second row print(M1[-1]) # -1 will print the last row
出力:
[3 6 9] [ 5 -10 15] [ 4 8 12]
最後の行を取得するには、インデックスまたは -1 を使用できます。たとえば、マトリックスには 3 つの行があり、
したがって、M1[0] は最初の行を返します。
M1[1] は 2 行目を表示します
M1[2] または M1[-1] は、3 行目または最後の行を提供します。
マトリックスの列を印刷するには
import numpy as np M1 = np.array([[2, 4, 6, 8, 10], [3, 6, 9, -12, -15], [4, 8, 12, 16, -20], [5, -10, 15, -20, 25]]) print(M1[:,0]) # Will print the first Column print(M1[:,3]) # Will print the third Column print(M1[:,-1]) # -1 will give you the last column
出力:
[2 3 4 5] [ 8 -12 16 -20] [ 10 -15 -20 25]
まとめ:
- Python マトリックスは、行と列に格納されたデータの特殊な 2 次元長方形配列です。行列のデータは、数値、文字列、式、記号などです。行列は、数学および科学計算で使用できる重要なデータ構造の 1 つです。
- Python には、行列データ型を実装する簡単な方法がありません。 Python マトリックスは、ネストされたリスト データ型と numpy ライブラリを使用して作成できます。
- Python ライブラリ Numpy は、配列の処理に役立ちます。 Numpy は、リストに比べて配列を少し速く処理します。
- 実行できる行列演算は、加算、減算、乗算、転置、行列の行と列の読み取り、行列のスライスなどです。
- 2 つの行列を追加するには、numpy.array() を使用し、(+) 演算子を使用してそれらを追加します。
- 意志を倍増させるには、numpy dot() メソッドを利用できます。 Numpy.dot() は、行列 M1 と M2 の内積です。 Numpy.dot() は 2D 配列を処理し、行列の乗算を実行します。
- 行列の転置は、行を列に、列を行に変更することによって計算されます。 Numpy の transpose() 関数を使用して、行列の転置を計算できます。
- 行列をスライスすると、指定された開始/終了インデックスに基づいて要素が返されます。
Python