论numpy中matrix和array的区别

 我来答
wii42
2017-08-01 · TA获得超过382个赞
知道小有建树答主
回答量:88
采纳率:60%
帮助的人:64.7万
展开全部

简单地说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

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式