论numpy中matrix和array的区别
1个回答
展开全部
简单地说matrix是array的子集!
Matrix是Array的一个小的分支,包含于Array。所以matrix 拥有array的所有特性。
matrices必须是2维的,但是 numpy arrays (ndarrays) 可以是多维的.
>>>import numpy as np
>>>a=np.mat('4 3; 2 1')
>>>b=np.mat('1 2; 3 4')
>>>a
matrix([[4, 3],
[2, 1]])
>>>b
matrix([[1, 2],
[3, 4]])
>>>a*b
matrix([[13, 20],
[5, 8]])
matrix 和 array 都可以通过objects后面加 .T 得到其转置。
>>>a.T
matrix([[4, 2],
[3, 1]])
但是 matrix objects 还可以在后面加 .H 得到共轭矩阵,加 .I 得到逆矩阵。
>>>a.I
matrix([[-0.5, 1.5],
[1., -2.]])
相反的是在numpy里面arrays遵从逐个元素的运算,所以array:c 和d的c*d运算相当于matlab里面的c.*d运算。
>>>c=np.array([[4, 3], [2, 1]])
>>>d=np.array([[1, 2], [3, 4]])
>>>c*d
array([[4, 6],
([6, 4]])
而矩阵相乘,则需要numpy里面的dot命令 :
>>>a**2
matrix([[22, 15],
[10, 7]])
>>>c**2
array([[16, 9],
[4, 1]],dtype=int32)
因为a是个matrix,所以a**2返回的是a*a,相当于矩阵相乘。而c是array,c**2相当于,c中的元素逐个求平方。
建议程序中只用array,你不仅可以实现matrix所有的功能,还减少了编程和阅读的麻烦。
当然你可以通过下面的两条命令轻松的实现两者之间的转换:np.asmatrix和np.asarray
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询