我有一个名为A1
(18,11)的矩阵和3个名为norms
,offsets
和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
我无法理解,因为矩阵看起来与我对齐。你能帮我理解这个错误吗?
答案 0 :(得分:2)
如果您有matrix
,则无论是matrix
还是array
还是matrixt
。 *
始终被视为矩阵乘法,因此not aligned
错误,因为它根本不执行单元格操作。您会看到追溯到__mul__()
defmatrix.pyc
要执行您想要的向量操作,请使用np.multiply((A1 + offsets) / norms , priorita)
,它与np.matrix(np.array((A1 + offsets) / norms )* np.array(priorita))
相同,但速度稍快,我认为读取效果更好。
答案 1 :(得分:1)
.shape
的{{1}}为(A1 + offsets) / norms
。您不能将(18, 11)
矩阵乘以(18, 11)
向量(第一个矩阵的第二个/列维度必须等于向量的维度)。我不确定你的实际目标是什么,但你可能想要转置矩阵,假设你的目标是标准的矩阵向量乘法:
(18, 1)