Numpy中matrix()和array()的区别

来自:jeexi

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. 在矩阵乘法中的不同

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()的乘法是矩阵乘法

array()和mat(),若让他们都遵循矩阵乘法,可以用dot()函数

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

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

猜你喜欢

转载自www.cnblogs.com/keye/p/11195428.html