Python 矩陣

在本文中,我們將介紹 Python 中的矩陣。我們將使用 Python 代碼實現矩陣的每個操作。

介紹

矩陣是以行和列存儲數據的矩形二維數組。矩陣可以存儲任何數據類型,如數字、字元串、表達式等。在使用矩陣之前,我們必須熟悉它的基本概念。數據排列成水平的行,垂直排列成列。矩陣內部的元素個數是(R) X (C),其中 R 是行,C 是列。 Python 沒有矩陣的內置類型,所以我們將使用多個列表作為矩陣。

我們將學習以下應用於矩陣的運算。

  • 矩陣加法
  • 矩陣減法
  • 矩陣乘法
  • 數積
  • 交叉乘積
  • 許多其他操作

矩陣的工作

下面的矩陣是 2×2,這意味著它有兩行兩列。


[[2,4],
[5,6]]

用 Python 創建矩陣

我們可以使用嵌套列表在 Python 中創建矩陣。所有元素都用方括弧([])括起來,並用逗號分隔。讓我們看看下面的例子。


matrix = [[ 'Arun',  25, 90, 74],
["Sachin", 410, 87.50, 130]
[56, "Abhinay", 253, 471]
  • 我們使用嵌套列表創建了一個 3×3 矩陣。
  • 第一行包含列表形式的 [‘Arun ‘,25,90,74] 。
  • 第二行列表形式包含【『薩欽』,410,87.50,130】。
  • 第三行包含列表形式的【56,「阿比奈」,253,471】。
  • 我們注意到我們的矩陣由數字和一個字元串值組成。

讀取矩陣數據

在下面的示例中,我們將讀取已定義矩陣的每一行。

示例-


matrix = [[ 'Arun',  25, 90, 74],
['Sachin', 410, 87.50, 130],
[56, 'Abhinay', 253, 471]]

print("The matrix is: ", matrix)

輸出:


The matrix is:  [['Arun', 25, 90, 74], ['Sachin', 410, 87.5, 130], [56, 'Abhinay', 253, 471]]

讀取每行的最後一個元素

在下面的例子中,我們將使用 Python 程序讀取每行的最後一個元素。

示例-


matrix = [[ 'Arun',  25, 90, 74],
['Sachin', 410, 87.50, 130],
[56, 'Abhinay', 253, 471]]

matrix_length = len(matrix)

#To read the last element from each row.
for i in range(matrix_length):
    print(matrix[i][-1])

輸出:

74
130
471

解釋-

在上面的代碼中,我們創建了一個矩陣,我們得到了矩陣的長度。我們使用 for循環迭代每一行,並列印結果。

我們可以使用上述方法讀取任何行或列。

讓我們理解矩陣的以下操作。

相加兩個矩陣

我們將相加兩個矩陣,並使用嵌套 for循環遍歷給定的矩陣。

示例-


mat1 = [[10, 13, 44], 
      [11, 2, 3], 
      [5, 3, 1]]

mat2 = [[7, 16, -6],
           [9, 20, -4], 
           [-1, 3 , 27]]

mat3  = [[0,0,0],
       [0,0,0],
       [0,0,0]]
matrix_length = len(mat1)

#To Add mat1 and mat2 matrices
for i in range(len(mat1)):
    for k in range(len(mat2)):
        mat3[i][k] = mat1[i][k] + mat2[i][k]

#To Print the matrix
print("The sum of Matrix mat1 and mat2 = ", mat3)

輸出:

The sum of Matrix M1 and M2 =  [[17, 29, 38], [20, 22, -1], [4, 6, 28]]

解釋-

  • 第一和第二矩陣是 3X3。
  • 我們初始化了另一個矩陣 mat3,它將存儲結果矩陣。
  • 我們應用嵌套 for循環迭代矩陣,外部循環迭代第一個矩陣。
  • 控制轉移內部循環;它迭代到第二個內部循環,這裡 I 的值為零,k 也為零。
  • 在第一次迭代中,彼此相加的 mat1 和 mat2 的第一個元素將繼續,直到所有元素都被添加。

兩個矩陣的乘法

兩個矩陣相乘和上面的代碼一樣,只需要把運算符+改成*。讓我們理解下面的例子。

示例-


mat1 = [[10, 13, 44],
      [11, 2, 3],
      [5, 3, 1]]

mat2 = [[7, 16, -6],
           [9, 20, -4],
           [-1, 3 , 27]]

mat3  = [[0,0,0],
       [0,0,0],
       [0,0,0]]
matrix_length = len(mat1)

#To Add mat1 and mat2 matrices
for i in range(len(mat1)):
    for k in range(len(mat2)):
        mat3[i][k] = mat1[i][k]  * mat2[i][k]

#To Print the matrix
print("The sum of Matrix mat1 and mat2 = ", mat3)

輸出:

The sum of Matrix mat1 and mat2 =  [[70, 208, -264], [99, 40, -12], [-5, 9, 27]]

矩陣的轉置

轉置是給定矩陣的行轉換成列的操作,反之亦然。讓我們理解下面的例子。

示例-


# Program to transpose a matrix using a nested loop

mat1 = [[12,7],
    [4 ,5],
    [3 ,8]]

res = [[0,0,0],
         [0,0,0]]

# iterate through rows
for i in range(len(mat1)):
   # iterate through columns
   for j in range(len(mat1[0])):
       res[j][i] = mat1[i][j]

for r in res:
   print(r)

輸出:

[12, 4, 3]
[7, 5, 8]

解釋

在上面的代碼中,我們有兩個 for循環來遍歷每一行和每一列。我們可以看到,在上面的輸出中,我們指定了 mat1[i][j]和 res[j][k]。

使用列表推導的轉置矩陣

我們可以用列表推導來轉置一行代碼的矩陣。讓我們理解下面的例子。

示例-


mat1 = [[12,7],
    [4 ,5],
    [3 ,8]]

res = [[0,0,0],
         [0,0,0]]

res = [[mat1[j][i] for j in range(len(mat1))] for i in range(len(mat1[0]))]

for r in res:
   print(r)

輸出:

[12, 4, 3]
[7, 5, 8]

輸出同上。列表推導減少了代碼行,並調換了矩陣。

從用戶處獲取矩陣輸入

到目前為止,我們已經討論了預定義矩陣。但是如果用戶想輸入他們的數據。因此,我們定義了以下用戶定義矩陣的示例。

示例-


# A example for matrix input from user 
row = int(input("Enter the number of rows:")) 
column = int(input("Enter the number of columns:")) 

# Initialize empty matrix 
matrix = [] 
print("Enter the entries row wise:") 

# For user input 
for i in range(row):       # A outer for loop for row entries 
   a =[] 
   for j in range(column):     # A inner for loop for column entries 
      a.append(int(input())) 
   matrix.append(a) 

# For printing the matrix 
for i in range(row): 
   for j in range(column): 
      print(matrix[i][j], end = " ") 
   print() 

輸出:

Enter the number of rows:3
Enter the number of columns:3
Enter the entries row wise:
5
6
7
8
9
2
4
3
1
5 6 7 
8 9 2 
4 3 1

解釋-

在上面的代碼中,我們接受了用戶輸入的行數和列數。我們已經輸入了 3 行 3 列;這意味著矩陣將有 9 個元素。在 for循環中,使用 append()函數將元素插入到空矩陣中。第二個 for循環用於以矩陣格式列印輸入數據。

使用 Numpy 和 map()功能

Python 提供了外部庫 Numpy。它用於科學計算;我們將在下一節學習矩陣 Numpy。我們將把它用於用戶輸入矩陣。

示例-

使用數字型檔創建矩陣

Numpy 庫幫助我們處理數組。要使用 Numpy,我們需要使用以下命令安裝 Numpy。


pip install Numpy 

成功安裝後,我們必須將其導入到我們的程序中。


import numpy as np

讓我們理解下面的例子。

示例-


import numpy as np
mat1 = np.array([[10, -5, 15], [30, -6, 91], [2, 8, 7]])
print("The matrix is: ")
print(mat1)

輸出:

The matrix is: 
[[10 -5 15]
[30 -6 91]
[ 2  8  7]]

用 Numpy 進行矩陣運算

我們可以使用 numpy.array() 執行所有矩陣運算,如加法、減法、轉置、矩陣切片等。

矩陣加法

我們將使用 numpy.array() 函數創建兩個矩陣,並使用+運算符添加它們。讓我們理解下面的例子。

示例-


import numpy as np
mat1 = np.array([[7, 8, 9], [3, -1, 17], [15, 10, 21]])
mat2 = np.array([[9, -18, 27], [11, 22, 33], [13, -26, 39]])
mat3 = mat1 + mat2  
print("The matrix addition is: ")
print(mat3)

輸出:

The matrix addition is: 
[[ 16 -10  36]
 [ 14  21  50]
 [ 28 -16  60]]

矩陣乘法

我們將使用 mumpy.dot() 方法將兩個矩陣相乘。它是矩陣 mat1 和 mat2 的點乘法,處理 2D 陣列並執行乘法。讓我們理解下面的例子。

示例-


import numpy as np
mat1 = np.array([[4, 6], [5, 10]])
mat2 =  np.array([[3, -1], [11, 22]])
mat3 = mat1.dot(mat2)  
print("The matrix is:")
print(mat3)

輸出:

The matrix is:
[[ 78 128]
 [125 215]]

矩陣的切片

我們可以像在 Python 標準列表中一樣分割矩陣的元素。切片根據開始/結束索引返回元素。我們也可以負切片。語法如下。

語法-


arr[start: end] 

arr 代表矩陣名稱。默認情況下,起始索引為 0,例如- [:3],這意味著起始索引為 0。如果我們不提供結束值,它將考慮數組的長度。我們可以將負索引值傳遞給開始和結束。在下面的例子中,我們將在普通數組中應用切片來理解切片是如何工作的。

示例-


import numpy as np

arr = np.array([10,40,61,14,25,12,97])
print(arr[2:5]) # It will print the elements from 2 to 4
print(arr[:4]) # It will print the elements from 0 to 3
print(arr[3:]) # It will print the elements from 3 to length of the array.

輸出:

[61 14 25]
[10 40 61 14]
[14 25 12 97]

現在,我們將在矩陣上實現切片。要對矩陣執行切片,請遵循以下語法。

Mat1[row_start:row_end,col_start:col_end]

在上面的語法中-

  • 第一個開始/結束表示選擇矩陣行的行。
  • 第一個開始/結束表示選擇矩陣列的列。

我們將在下面的矩陣中執行切片。


mat1 = np.array([[4, 10, 60, 18, 20],
    [35, 16, 19, -12, 41],
    [23, 80, 42, 24, -20],
    [7, -10, 15, 40, 17]])

上面的矩陣由四行組成。第 0 個 raw 有[4,10,60,18,20],第 1 行有[35,16,19,-12,41]等等。它有五列。讓我們理解下面的例子。

示例-


import numpy as np 
mat1 = np.array([[4, 10, 60, 18, 20],
    [35, 16, 19, -12, 41],
    [23, 80, 42, 24, -20],
    [7, -10, 15, 40, 17]])
print(mat1[1:3, 1:4])

輸出:

[[ 16  19 -12]
 [ 80  42  24]]

解釋

在上面的示例中,我們列印了第一行和第二行,並對第一、第二和第三列進行了切片。根據切片語法,我們可以得到任何行和列。

示例-列印第一行和所有列


import numpy as np
mat1 = np.array([[4, 10, 60, 18, 20],
    [35, 16, 19, -12, 41],
    [23, 80, 42, 24, -20],
    [7, -10, 15, 40, 17]])
print(mat1[:1, ])

輸出:

[ 4 10 60 18 20]]

示例-列印矩陣的行


import numpy as np
mat1 = np.array([[14, 60, 29], [35, -10, 13], [4,8,12]])
print(mat1[0])  #first row
print(mat1[1]) # the second row
print(mat1[-1]) # -1 will print the last row

輸出:

[14 60 29]
[ 35 -10  13]
[ 4  8 12]

結論

到目前為止,我們已經討論了使用 Python 的基本矩陣。我們已經學會了用不同的方法創建矩陣。Python 矩陣是一個專門的二維矩形數據列表。矩陣可以由數字、字元串、表達式、符號等組成。Python 沒有提供實現矩陣數據類型的直接方法。我們可以使用嵌套列表和 Numpy 庫來創建矩陣。


原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/303093.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-31 11:49
下一篇 2024-12-31 11:49

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論