日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Numpy創建NumPy矩陣的簡單實現_python

作者:mighty13 ? 更新時間: 2023-04-24 編程語言

創建NumPy矩陣

NumPy對于多維數組的運算,默認情況下并不進行矩陣運算。如果需要對數組進行矩陣運算,則可以調用相應的函數。

在NumPy中,矩陣是ndarray的子類。

在NumPy中,數組和矩陣有著重要的區別。NumPy提供了兩個基本的對象:一個N維數組對象和一個通用函數對象。其他對象都是在它們之上構建的。

矩陣是繼承自NumPy數組對象的二維數組對象。與數學概念中的矩陣一樣,NumPy中的矩陣也是二維的。

1. 創建矩陣

可以使用mat、matrix以及bmat函數來創建矩陣。使用mat函數創建矩陣時,若輸入matrix或ndarray對象,則不會為它們創建副本。因此,調用mat函數和調用matrix(data, copy=False)等價。

案例:創建矩陣

# 導入NumPy庫
import numpy as np
# 使用分號隔開數據
matr1 = np.mat("1 2 3;4 5 6;7 8 9")
print('創建的矩陣為:',matr1)
# 使用列表創建矩陣
matr2 = np.matrix([[1,2,3],[4,5,6],[7,8,9]])
print('創建的矩陣為:',matr2)

創建的矩陣為: [[1 2 3]
?[4 5 6]
?[7 8 9]]
創建的矩陣為: [[1 2 3]
?[4 5 6]
?[7 8 9]]

2. 創建分塊矩陣

很多時候會根據小的矩陣創建大的矩陣,即將小矩陣組合成大矩陣。在NumPy中,可以使用bmat分塊矩陣(block matrix)函數實現。

案例:創建分塊矩陣

arr1 = np.eye(3)
print('創建的數組1為:',arr1)

arr2 = 3*arr1
print('創建的數組2為:',arr2)

print('創建的矩陣為:',np.bmat("arr1 arr2; arr1 arr2"))

創建的數組1為: [[1. 0. 0.]
?[0. 1. 0.]
?[0. 0. 1.]]
創建的數組2為: [[3. 0. 0.]
?[0. 3. 0.]
?[0. 0. 3.]]
創建的矩陣為: [[1. 0. 0. 3. 0. 0.]
?[0. 1. 0. 0. 3. 0.]
?[0. 0. 1. 0. 0. 3.]
?[1. 0. 0. 3. 0. 0.]
?[0. 1. 0. 0. 3. 0.]
?[0. 0. 1. 0. 0. 3.]]

3. 矩陣計算

在NumPy中,矩陣計算是針對整個矩陣中的每個元素進行的。與使用for循環相比,其在運算速度上更快。

案例:矩陣計算

matr1 = np.mat("1 2 3;4 5 6;7 8 9") ?#創建矩陣
print('創建的矩陣為:',matr1)

matr2 = matr1*3 ?#矩陣與數相乘
print('創建的矩陣為:',matr2)
print('矩陣相加結果為:',matr1+matr2) ?#矩陣相加
print('矩陣相減結果為:',matr1-matr2) ?#矩陣相減
print('矩陣相乘結果為:',matr1*matr2) ?#矩陣相乘
print('矩陣對應元素相乘結果為:',np.multiply(matr1,matr2))

創建的矩陣為: [[1 2 3]
?[4 5 6]
?[7 8 9]]
創建的矩陣為: [[ 3 ?6 ?9]
?[12 15 18]
?[21 24 27]]
矩陣相加結果為: [[ 4 ?8 12]
?[16 20 24]
?[28 32 36]]
矩陣相減結果為: [[ -2 ?-4 ?-6]
?[ -8 -10 -12]
?[-14 -16 -18]]
矩陣相乘結果為: [[ 90 108 126]
?[198 243 288]
?[306 378 450]]
矩陣對應元素相乘結果為: [[ ?3 ?12 ?27]
?[ 48 ?75 108]
?[147 192 243]]

4. 矩陣屬性

除了能夠實現各類運算外,矩陣還有其特有的屬性。

屬性 說明
T 返回自身的轉置
H 返回自身的共軛轉置
I 返回自身的逆矩陣
A 返回自身數據的2維數組的一個視圖

案例:矩陣的屬性

print('矩陣轉置結果為:',matr1.T)  #轉置
print('矩陣共軛轉置結果為:',matr1.H)  #共軛轉置(實數的共軛就是其本身)
print('矩陣的二維數組結果為:',matr1.A)  #返回二維數組的視圖
print('矩陣的逆矩陣結果為:',matr1.I)  #逆矩陣

矩陣轉置結果為: [[ 2 ?1 -1]
?[ 2 -1 ?2]
?[ 3 ?0 ?1]]
矩陣共軛轉置結果為: [[ 2 ?1 -1]
?[ 2 -1 ?2]
?[ 3 ?0 ?1]]
矩陣的二維數組結果為: [[ 2 ?2 ?3]
?[ 1 -1 ?0]
?[-1 ?2 ?1]]
矩陣的逆矩陣結果為: [[ 1. -4. -3.]
?[ 1. -5. -3.]
?[-1. ?6. ?4.]]

原文鏈接:https://blog.csdn.net/mighty13/article/details/119652459

欄目分類
最近更新