Numpy創(chuàng)建NumPy矩陣的簡單實現
創(chuàng)建NumPy矩陣
NumPy對于多維數組的運算,默認情況下并不進行矩陣運算。如果需要對數組進行矩陣運算,則可以調用相應的函數。
在NumPy中,矩陣是ndarray的子類。
在NumPy中,數組和矩陣有著重要的區(qū)別。NumPy提供了兩個基本的對象:一個N維數組對象和一個通用函數對象。其他對象都是在它們之上構建的。
矩陣是繼承自NumPy數組對象的二維數組對象。與數學概念中的矩陣一樣,NumPy中的矩陣也是二維的。
1. 創(chuàng)建矩陣
可以使用mat、matrix以及bmat函數來創(chuàng)建矩陣。使用mat函數創(chuàng)建矩陣時,若輸入matrix或ndarray對象,則不會為它們創(chuàng)建副本。因此,調用mat函數和調用matrix(data, copy=False)等價。
案例:創(chuàng)建矩陣
# 導入NumPy庫 import numpy as np # 使用分號隔開數據 matr1 = np.mat("1 2 3;4 5 6;7 8 9") print('創(chuàng)建的矩陣為:',matr1) # 使用列表創(chuàng)建矩陣 matr2 = np.matrix([[1,2,3],[4,5,6],[7,8,9]]) print('創(chuàng)建的矩陣為:',matr2)
創(chuàng)建的矩陣為: [[1 2 3]
[4 5 6]
[7 8 9]]
創(chuàng)建的矩陣為: [[1 2 3]
[4 5 6]
[7 8 9]]
2. 創(chuàng)建分塊矩陣
很多時候會根據小的矩陣創(chuàng)建大的矩陣,即將小矩陣組合成大矩陣。在NumPy中,可以使用bmat分塊矩陣(block matrix)函數實現。
案例:創(chuàng)建分塊矩陣
arr1 = np.eye(3) print('創(chuàng)建的數組1為:',arr1) arr2 = 3*arr1 print('創(chuàng)建的數組2為:',arr2) print('創(chuàng)建的矩陣為:',np.bmat("arr1 arr2; arr1 arr2"))
創(chuàng)建的數組1為: [[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
創(chuàng)建的數組2為: [[3. 0. 0.]
[0. 3. 0.]
[0. 0. 3.]]
創(chuàng)建的矩陣為: [[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循環(huán)相比,其在運算速度上更快。
案例:矩陣計算
matr1 = np.mat("1 2 3;4 5 6;7 8 9") ?#創(chuàng)建矩陣 print('創(chuàng)建的矩陣為:',matr1) matr2 = matr1*3 ?#矩陣與數相乘 print('創(chuàng)建的矩陣為:',matr2) print('矩陣相加結果為:',matr1+matr2) ?#矩陣相加 print('矩陣相減結果為:',matr1-matr2) ?#矩陣相減 print('矩陣相乘結果為:',matr1*matr2) ?#矩陣相乘 print('矩陣對應元素相乘結果為:',np.multiply(matr1,matr2))
創(chuàng)建的矩陣為: [[1 2 3]
[4 5 6]
[7 8 9]]
創(chuàng)建的矩陣為: [[ 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.]]
到此這篇關于Numpy創(chuàng)建NumPy矩陣的簡單實現的文章就介紹到這了,更多相關Numpy創(chuàng)建NumPy矩陣內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!