Python 行列: 転置、乗算、NumPy 配列の例

何ですか Python マトリックス?

A Python 行列は、行と列に格納されたデータの特殊な 2 次元の長方形配列です。行列内のデータは、数値、文字列、式、記号などです。行列は、数学的および科学的計算で使用できる重要なデータ構造の 1 つです。

どのように行います Python マトリックスは機能しますか?

行列形式の XNUMX 次元配列内のデータは次のようになります。

Python マトリックス

ステップ1) これは 2×2 行列を示しています。2 つの行と 1 つの列があります。行列内のデータは数値です。行 2,3 の値は 2、4,5、行 1 の値は 2,4、2 です。列、つまり列 3,5 の値は XNUMX、XNUMX、列 XNUMX の値は XNUMX、XNUMX です。

ステップ2) 2×3の行列を示しています。 1 行 2,3,4 列あります。 最初の行内のデータ、つまり row2 の値は 5,6,7、1、2,5 であり、row2 の値は 3,6、3、4,7 です。 列colXNUMXの値はXNUMX、XNUMX、colXNUMXの値はXNUMX、XNUMX、colXNUMXの値はXNUMX、XNUMXです。

同様に、nxn行列内にデータを保存することもできます。 Python行列のような加算、減算、乗算など、さまざまな演算を実行できます。

Python 行列データ型を実装する簡単な方法はありません。

Python 行列は配列を使用しており、同じことを実装できます。

  • 作る Python ネストされたリストデータ型を使用した行列
  • 創造する Python 配列を使用した行列 Python Numpy パッケージ

創造する Python ネストされたリストデータ型を使用した行列

In Python配列はリスト データ型を使用して表されます。そこで、リストを使用して Python マトリックスを作成します。

以下に示すように、3×3 行列を作成します。

創造する Python ネストされたリストを使用した行列

  • マトリックスには 3 行 3 列があります。
  • リスト形式の最初の行は次のようになります: [8,14,-6]
  • リストの 12,7,4 行目は [XNUMX] になります。
  • リストの 11,3,21 行目は [-XNUMX] になります。

すべての行と列を含むリスト内の行列は次のようになります。

List = [[Row1], 
           [Row2], 
           [Row3]
           ...
           [RowN]]

したがって、上記のマトリックスに従って、マトリックス データを含むリスト タイプは次のようになります。

M1 = [[8, 14, -6], [12,7,4], [-11,3,21]]

内部のデータを読み取る Python リストを使用した行列。

上で定義した行列を利用します。 この例では、データを読み取り、行列を出力し、各行の最後の要素を表示します。

例: マトリックスを印刷するには

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]

ネストされたリストを使用した行列の追加

与えられた XNUMX つの行列を簡単に追加できます。 ここでの行列はリスト形式になります。 指定された行列を追加する例に取り組んでみましょう。

マトリックス 1:

M1 = [[8, 14, -6],
           [12,7,4], 
           [-11,3,21]]

マトリックス 2 :

M2 = [[3, 16, -6],
           [9,7,-4], 
           [-1,3,13]]

最後は、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 配列を使用した行列 Python Numpy パッケージ

Python ライブラリ Numpy は配列の処理に役立ちます。 Numpy はリストと比較して配列を少し高速に処理します。

Numpy を使用するには、まず Numpy をインストールする必要があります。 Numpy をインストールするには、以下の手順に従ってください。

ステップ1) Numpyをインストールするコマンドは次のとおりです。

pip install NumPy

ステップ2) コードで Numpy を使用するには、Numpy をインポートする必要があります。

import NumPy

ステップ3) 以下に示すように、エイリアスを使用して Numpy をインポートすることもできます。

import NumPy as np

Numpy の array() メソッドを利用して Python 行列を作成します。

例: Numpyで作成する配列 Python マトリックス

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

マトリックス OperaNumpy.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() を使用して 1 つの行列を作成します。 それらを増やすには、numpy dot() メソッドを利用できます。 Numpy.dot() は行列 M2 と M2 の内積です。 Numpy.dot() は XNUMXD 配列を処理し、行列の乗算を実行します。

例:

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] になります。

  • 最初の開始/終了は行に対するもの、つまり行列の行を選択するものです。
  • XNUMX 番目の開始/終了は列用です。つまり、行列の列を選択します。

使用する行列 M1 は次のとおりです。

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 で始まります。0th 行は [2,4,6,8,10]、1st 行は [3,6,9,-12,-15] の後に 2 が続きますnd そして、3rd.

行列 M1 には 5 つの列があります。 インデックスは 0 ~ 4 で始まります。0th 列の値は [2,3,4,5]、1st 列の値は [4,6,8,-10] で、その後に 2 が続きます。nd、3rd、4th、および5th.

スライスを使用して行列から行と列のデータを取得する方法を示す例を示します。例では、1を印刷しています。st そして、2nd 行、列の場合は 1 列目、1 列目、3 列目が必要です。 その出力を取得するために、M1[4:XNUMX, XNUMX:XNUMX] を使用しました。

例:

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

例 : すべての行と XNUMX 列目を印刷する場合

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

例: 最初の 2 行と最初の XNUMX 列を印刷する場合

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] で XNUMX 行目が表示されます

M1[2] または M1[-1] を指定すると、XNUMX 行目または最後の行が表示されます。

行列の列を印刷するには

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]

まとめ

  • A Python 行列は、行と列に格納されたデータの特殊な 2 次元の長方形配列です。行列内のデータは、数値、文字列、式、記号などです。行列は、数学的および科学的計算で使用できる重要なデータ構造の 1 つです。
  • Python 行列データ型を実装する簡単な方法はありません。 Python マトリックスは、ネストされたリスト データ型と numpy ライブラリを使用して作成できます。
  • Python ライブラリ Numpy は配列の処理に役立ちます。 Numpy はリストと比較して配列を少し高速に処理します。
  • 実行できる行列演算は、加算、減算、乗算、転置、行列の行や列の読み取り、行列のスライスなどです。
  • 2 つの行列を追加するには、numpy.array() を使用し、(+) 演算子を使用して追加します。
  • それらを増やすには、numpy dot() メソッドを使用できます。 Numpy.dot() は行列 M1 と M2 の内積です。 Numpy.dot() は 2D 配列を処理し、行列の乗算を実行します。
  • 行列の転置は、行を列として、列を行として変更することによって計算されます。 Numpy の transpose() 関数を使用して、行列の転置を計算できます。
  • 行列をスライスすると、指定された開始/終了インデックスに基づいて要素が返されます。