一、Python矩陣的表示
在Python中,矩陣的表示可以使用嵌套列表(List of List)或是使用NumPy庫中的數組(Array)進行表示。下面分別詳細介紹這兩種表示方法。
1、使用嵌套列表表示矩陣
使用嵌套列表表示矩陣時,可以使用一個主列表來包含多個子列表,每個子列表代表矩陣中的一行。例如:
matrix = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
以上代碼表示了一個3行3列的矩陣,每個元素都是整數。可以通過下標獲取其中的元素。
2、使用NumPy庫中的數組表示矩陣
NumPy是Python中的科學計算庫,它提供了一個Array對象,可以用來表示矩陣。使用NumPy庫中的數組表示矩陣時,需要先導入NumPy庫,並使用其array函數創建數組。例如:
import numpy as np
matrix = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
以上代碼使用NumPy庫中的array函數創建了一個3行3列的矩陣。可以通過array對象提供的函數和屬性訪問其中的元素。
二、Python矩陣合併的基本操作
矩陣合併是指將兩個或多個矩陣按照一定規則組合成一個新的矩陣。在Python中,可以使用多種方法對矩陣進行合併操作,包括矩陣相加、矩陣拼接、矩陣式圖形、矩陣分解等。
1、Python矩陣相加
矩陣相加是指將兩個矩陣中對應的元素相加得到一個新的矩陣。在Python中,可以使用嵌套列表或NumPy庫中的數組來表示矩陣,然後使用循環遍歷對應元素並相加得到新的矩陣。例如:
#使用嵌套列表表示矩陣
matrix1 = [[1, 2],
[3, 4]]
matrix2 = [[5, 6],
[7, 8]]
#使用循環計算相加結果
result = [[0, 0],
[0, 0]]
for i in range(len(matrix1)):
for j in range(len(matrix1[i])):
result[i][j] = matrix1[i][j] + matrix2[i][j]
print(result)
這段代碼的運行結果為:
[[6, 8], [10, 12]]
在使用NumPy庫中的數組表示矩陣時,可以直接使用NumPy庫中提供的函數實現矩陣相加。例如:
import numpy as np
#創建數組表示矩陣
matrix1 = np.array([[1, 2],
[3, 4]])
matrix2 = np.array([[5, 6],
[7, 8]])
#直接調用NumPy庫中的函數得到相加結果
result = np.add(matrix1, matrix2)
print(result)
這段代碼的運行結果為:
[[ 6 8] [10 12]]
2、Python矩陣拼接
矩陣拼接是指將兩個或多個矩陣按一定規則拼接在一起形成一個新的矩陣。在Python中,可以使用NumPy庫中的concatenate函數或vstack函數、hstack函數對矩陣進行拼接。
其中,concatenate函數可以對多個矩陣進行拼接,可以指定拼接的軸向。vstack函數可以垂直拼接兩個矩陣,hstack函數可以水平拼接兩個矩陣。例如:
import numpy as np
#創建數組表示矩陣
matrix1 = np.array([[1, 2],
[3, 4]])
matrix2 = np.array([[5, 6],
[7, 8]])
#使用concatenate函數進行拼接
result = np.concatenate((matrix1, matrix2), axis=0) #按行進行拼接
print(result)
#使用vstack函數進行拼接
result = np.vstack((matrix1, matrix2))
print(result)
#使用hstack函數進行拼接
result = np.hstack((matrix1, matrix2))
print(result)
這段代碼的運行結果分別為:
[[1 2] [3 4] [5 6] [7 8]] [[1 2] [3 4] [5 6] [7 8]] [[1 2 5 6] [3 4 7 8]]
3、Python矩陣式圖形
矩陣式圖形是一種以矩陣為基礎組成的圖形,具有形狀、大小一致的特點。Python中可以使用turtle庫中的Turtle函數實現矩陣式圖形。例如:
import turtle
#設置畫布和海龜
canvas = turtle.Screen()
canvas.title("Matrix")
canvas.bgcolor("white")
turtle.speed(0)
turtle.hideturtle()
#設置矩陣參數
rows = 10 #行數
cols = 10 #列數
size = 25 #每個格子的大小
margin = 5 #每個格子之間的間隔
x0 = -cols/2 * (size + margin)
y0 = rows/2 * (size + margin)
color = "blue"
bgcolor = "yellow"
#畫矩陣
turtle.penup()
turtle.goto(x0, y0)
turtle.pendown()
turtle.pencolor(color)
turtle.fillcolor(bgcolor)
turtle.begin_fill()
for i in range(rows):
for j in range(cols):
turtle.fd(size)
turtle.right(90)
turtle.fd(size)
turtle.right(90)
turtle.fd(size)
turtle.right(90)
turtle.fd(size+margin)
turtle.right(90)
turtle.penup()
turtle.goto(x0, y0-(i+1)*(size+margin))
turtle.pendown()
turtle.end_fill()
#顯示圖形
canvas.mainloop()
這段代碼的運行結果為:
4、Python矩陣分解
矩陣分解是將一個矩陣分解成兩個或多個矩陣的乘積,常用的分解方法有LU分解、QR分解、SVD分解等。在Python中,可以使用NumPy庫中的函數實現矩陣分解,例如:
import numpy as np
#創建數組表示矩陣
matrix = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
#使用NumPy庫中的函數進行LU分解
l, u = np.linalg.lu(matrix)
print(l)
print(u)
#使用NumPy庫中的函數進行QR分解
q, r = np.linalg.qr(matrix)
print(q)
print(r)
#使用NumPy庫中的函數進行SVD分解
u, s, v = np.linalg.svd(matrix)
print(u)
print(s)
print(v)
以上代碼分別輸出了矩陣的LU分解、QR分解和SVD分解結果。
三、Python矩陣合併的高級操作
除了基本的矩陣合併操作外,在Python中還可以使用一些高級操作對矩陣進行合併,包括矩陣求和、對矩陣進行排序等。
1、Python矩陣求和
矩陣求和指的是對整個矩陣或矩陣中某一行或列中所有元素進行求和。在Python中,可以使用for循環等操作對矩陣中的元素進行遍歷並計算求和。
例如,對於下面的矩陣,可以使用for循環計算其總和:
matrix = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
sum = 0
for i in range(matrix.shape[0]):
for j in range(matrix.shape[1]):
sum += matrix[i][j]
print(sum)
以上代碼輸出的結果為:
45
同時,也可以使用NumPy中的sum函數對矩陣中的元素進行求和。例如:
sum = np.sum(matrix) print(sum) row_sum = np.sum(matrix, axis=1) print(row_sum) col_sum = np.sum(matrix, axis=0) print(col_sum)
以上代碼的輸出結果分別為:
45 [ 6 15 24] [12 15 18]
其中,axis參數表示沿哪一個軸向進行求和。當axis=None時,表示對所有元素進行求和;當axis=0時,表示沿列進行求和;當axis=1時,表示沿行進行求和。
2、Python對矩陣進行排序
對矩陣進行排序操作,可以使用NumPy庫中的sort函數對矩陣中的元素進行排序。例如:
matrix = np.array([[3, 2, 1],
[6, 5, 4],
[9, 8, 7]])
result = np.sort(matrix, axis=None)
print(result)
row_sort = np.sort(matrix, axis=1)
print(row_sort)
col_sort = np.sort(matrix, axis=0)
print(col_sort)
以上代碼的輸出結果分別為:
[1 2 3 4 5 6 7 8 9] [[1 2 3] [4 5 6] [7 8 9]] [[3 2 1] [6 5 4] [9 8 7]]
其中,axis參數的含義同矩陣求和中的axis參數意義相同。
3、Python矩陣列求和
對矩陣進行列求和,可以使用for循環等操作對矩陣中的元素進行遍歷並計算求和。
例如,對於下面的矩陣,可以使用for循環計算其每一列的和:
matrix = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
col_sum = np.zeros(matrix.shape[1])
for j in range(matrix.shape[1]):
for i in range(matrix.shape[0]):
col_sum[j] += matrix[i][j]
print(col_sum)
以上代碼輸出的結果為:
[15. 18. 21. 24.]
同時,也可以使用NumPy中的sum函數對矩陣中的列元素進行求和。例如:
col_sum = np.sum(matrix, axis=0) print(col_sum)
以上代碼的輸出結果為:
[15 18 21 24]
4、Python矩陣和數組的區別
在Python中,矩陣和數組是兩個不同的概念。數組是一種用來存儲同一數據類型元素的集合
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/307455.html
微信掃一掃
支付寶掃一掃