numpy文档建议使用数组而不是矩阵来处理矩阵。但是,与八度(直到最近我一直使用)不同,*不执行矩阵乘法,您需要使用函数matrixmultipy()。我觉得这使代码非常不可读。是否有人分享我的观点并找到了解决方案?
3 回答
Helenr
TA贡献1780条经验 获得超4个赞
避免使用matrix该类的主要原因是:a)本质上是二维的,并且b)与“常规” numpy数组相比,存在额外的开销。如果您要做的只是线性代数,那么请务必使用矩阵类...就我个人而言,我发现它比它值得的麻烦更多。
对于数组(Python 3.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)
就个人而言,我发现它比*表示矩阵乘法的运算符更具可读性。
对于Python 3.5中的数组,请使用x @ y。
杨魅力
TA贡献1811条经验 获得超6个赞
在某些情况下,点运算符在处理数组和处理矩阵时会给出不同的答案。例如,假设以下内容:
>>> 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.]]
添加回答
举报
0/150
提交
取消