numpy文档建议使用数组而不是矩阵来处理矩阵。但是,与octave (我最近还在使用它)不同,*不执行矩阵乘法,您需要使用matrixmultipy()函数。我觉得这使得代码很难读。
有没有人同意我的观点,并找到了解决方案?
发布于 2014-08-25 05:36:11
在3.5中,Python最终实现了got a matrix multiplication operator。语法为a @ b
。
发布于 2010-10-09 00:49:23
避免使用matrix
类的主要原因是: a)它本质上是二维的,b)与“普通”numpy数组相比有额外的开销。如果你所做的一切都是线性代数,那么请随意使用矩阵类……不过,就我个人而言,我发现它的麻烦比它的价值更大。
对于数组(Python3.5之前的版本),请使用dot
而不是matrixmultiply
。
例如。
import numpy as np
x = np.arange(9).reshape((3,3))
y = np.arange(3)
print np.dot(x,y)
或者在较新版本的numpy中,只需使用x.dot(y)
就我个人而言,我发现它比暗示矩阵乘法的*
运算符更具可读性……
对于Python3.5中的数组,请使用x @ y
。
发布于 2013-10-03 05:01:03
在处理数组和处理矩阵时,点运算符会给出不同的答案。例如,假设如下所示:
>>> 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.]]
https://stackoverflow.com/questions/3890621
复制相似问题