工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Python

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

Python マトリックスとは

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

この Python チュートリアルでは、次のことを学びます:

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 では、配列は list データ型を使用して表されます。それでは、リストを使用して python マトリックスを作成します。

以下に示すように、3×3 マトリックスを作成します。

すべての行と列を含むリスト内のマトリックスは次のとおりです:

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

行列のスライス

スライスは、指定された開始/終了インデックスに基づいて、マトリックスから要素を返します。

行列のスライスに取り組む前に、単純な配列にスライスを適用する方法を理解しましょう。

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]

になります。

使用する行列 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

  1. Python 辞書
  2. C++ の配列 |宣言する |初期化 |配列へのポインタの例
  3. Python Print() ステートメント:例を使用して印刷する方法
  4. 例を使用した Python 文字列 count()
  5. Python String format() 例で説明
  6. Python String find() メソッドと例
  7. 例を含む Python Lambda 関数
  8. Python abs() 関数:絶対値の例
  9. 例を使用した Python round() 関数
  10. Python range() 関数:Float、List、For ループの例
  11. 例を使用した Python map() 関数