Python NumPy:向量乘法矩阵
我得到了1个名为Python NumPy:向量乘法矩阵,python,numpy,Python,Numpy,我得到了1个名为A1(18,11)的矩阵和3个名为norms,offset和priorita(18,1)的向量 当我尝试执行此操作时: A1 = (A1 + offsets) / norms * priorita 我得到以下错误: A1 = (A1 + offsets) / norms * priorita File "/usr/lib/python2.7/dist-packages/numpy/matrixlib/defmatrix.py", line 330, in __mul__
A1
(18,11)的矩阵和3个名为norms
,offset
和priorita
(18,1)的向量
当我尝试执行此操作时:
A1 = (A1 + offsets) / norms * priorita
我得到以下错误:
A1 = (A1 + offsets) / norms * priorita
File "/usr/lib/python2.7/dist-packages/numpy/matrixlib/defmatrix.py", line 330, in __mul__
return N.dot(self, asmatrix(other))
ValueError: matrices are not aligned
我无法理解,因为矩阵看起来与我对齐。你能帮我理解这个错误吗?的
(A1+偏移量)/norms
的.shape
是(18,11)
。不能将(18,11)
矩阵乘以(18,1)
向量(第一个矩阵的第二个/列维度必须等于向量的维度)。我不确定您的实际目标是什么,但您可能想转置矩阵,假设您的目标是标准矩阵向量乘法:
A1 = ((A1 + offsets) / norms).T * priorita
当你有一个
矩阵
时,不管它是一个矩阵
和一个数组
还是两个矩阵
s*
始终被视为矩阵乘法,因此出现未对齐
错误,因为它根本不执行单元操作。您可以在defmatrix.pyc
要执行您想要的向量操作,请使用
np.multiply((A1+偏移量)/norms,priorita)
,这与np.matrix(np.array((A1+偏移量)/norms)*np.array(priorita))
是一样的,但速度稍微快一点,而且我认为读起来更好 如果norms
,offset
,priorita
具有ndim=2
,如果使用offset.ravel()
,norms.ravel()
,priorita.ravel()
。np.乘法((A1+偏移量)/norms,priorita)
是一种方法。谢谢。