Numpy中matrix()和array()的區別


 

matrix() 和 array() 的區別,主要從以下方面說起:

 

1. 矩陣生成方式不同

import numpy as np
 
a1 = np.array([[1, 2], [3, 4]])
b1 = np.mat([[1, 2], [3, 4]])
 
a2 = np.array(([1, 2], [3, 4]))
b2 = np.mat(([1, 2], [3, 4]))
 
a3 = np.array(((1,2), (3,4)))
b3 = np.mat(((1,2), (3,4)))
 
b4 = np.mat('1 2; 3 4')
 
print("\n",a1,"\n",b1,"\n",a2,"\n",b2,"\n",a3,"\n",b3,"\n",b4)

結果均為:

 [[1 2]
 [3 4]]

上述變化就是將 “[]” 換成“()”。不同之處在於  b4 內用引號、空格和分號來產生矩陣,這個方法只可以在  matrix() 函數中使用,即b4 = np.mat('1 2; 3 4')。不可以寫成的 a4 = np.array('1 2; 3 4') 。

 

2. 矩陣性質不同

matrix()和 array ()后面加上 .T 得到轉置。但是matrix()還可以在后面加 .H 得到共軛矩陣, 加 .I 得到逆矩陣, array()就不可以。

import numpy as np
 
a1 = np.array([[1, 2], [3, 4]])
b1 = np.mat([[1, 2], [3, 4]])
 
print(a1.T)
print(b1.T)
[[1 3]
 [2 4]]
[[1 3]
 [2 4]]

import numpy as np
a1 = np.array([[1, 2], [3, 4]])
print(a1.H)

AttributeError: 'numpy.ndarray' object has no attribute 'H'

print(a1.I)

AttributeError: 'numpy.ndarray' object has no attribute 'I'

import numpy as np
b1 = np.mat([[1, 2], [3, 4]])
 
print(b1.H)
print(b1.I)

[[1 3]
 [2 4]]
[[-2.   1. ]
 [ 1.5 -0.5]]

3. 在矩陣乘法中的不同

array()的乘法是矩陣中對應位置的兩個數相乘。

mat()的乘法是矩陣乘法。

import numpy as np
 
a1 = np.array([[1, 2], [3, 4]])
c1 = np.array([[5,6],[7,8]])
 
b1 = np.mat([[1, 2], [3, 4]])
d1 = np.mat([[5,6],[7,8]])
 
print("a1乘c1的結果:",a1*c1)
print("b1乘d1的結果:",b1*d1)

a1乘c1的結果: [[ 5 12]
 [21 32]]
b1乘d1的結果: [[19 22]
 [43 50]]

array()和mat(),若讓他們都遵循矩陣乘法,可以用dot()函數

print(np.dot(a1,c1))
print(np.dot(b1,d1))

[[19 22]
 [43 50]]
[[19 22]
 [43 50]]

 

矩陣平方:array()的平方是矩陣對應位置數的平方。mat()的平方是矩陣乘積。

print("a1的平方",a1**2)
print("b1的平方",b1**2)
a1的平方 [[ 1  4]
 [ 9 16]]
b1的平方 [[ 7 10]
 [15 22]]

 

總結:

array()乘法:*代表點乘(對應元素相乘),dot()代表矩陣乘。

mat()乘法:*代表矩陣乘,multiply()代表點乘。

 

4. matrix()和array()關於秩的區別

 

5. array()和mat()之間的轉換

array()——>mat():np.asmatrix()

a1 = np.array([[1,2], [3,4]])
a1
array([[1, 2],
       [3, 4]])
a2 = np.asmatrix(a1)
a2
matrix([[1, 2],
        [3, 4]])

 

mat()——>array():np.asarray()

b1 = np.mat([[1,2], [3,4]])
b1
matrix([[1, 2],
        [3, 4]])
b2 = np.asarray(b1)
b2 
array([[1, 2],
       [3, 4]])

 

 

來自:jeexi


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM