NumPy矩阵与数组类的乘法有何不同?

numpy文档建议使用数组而不是矩阵来处理矩阵。但是,与八度(直到最近我一直使用)不同,*不执行矩阵乘法,您需要使用函数matrixmultipy()。我觉得这使代码非常不可读。


是否有人分享我的观点并找到了解决方案?


MYYA
浏览 573回答 3
3回答

Helenr

避免使用matrix该类的主要原因是:a)本质上是二维的,并且b)与“常规” numpy数组相比,存在额外的开销。如果您要做的只是线性代数,那么请务必使用矩阵类...就我个人而言,我发现它比它值得的麻烦更多。对于数组(Python 3.5之前的版本),请使用dot代替matrixmultiply。例如import numpy as npx = np.arange(9).reshape((3,3))y = np.arange(3)print np.dot(x,y)或在新版本的numpy中,只需使用 x.dot(y)就个人而言,我发现它比*表示矩阵乘法的运算符更具可读性。对于Python 3.5中的数组,请使用x @ y。

杨魅力

在某些情况下,点运算符在处理数组和处理矩阵时会给出不同的答案。例如,假设以下内容:>>> a=numpy.array([1, 2, 3])>>> b=numpy.array([1, 2, 3])让我们将它们转换成矩阵:>>> am=numpy.mat(a)>>> bm=numpy.mat(b)现在,我们可以看到两种情况的不同输出:>>> print numpy.dot(a.T, b)14>>> print am.T*bm[[1.  2.  3.] [2.  4.  6.] [3.  6.  9.]]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python