NumPy:矢量乘法矩阵

时间:2014-04-26 19:21:41

标签: python numpy

我有一个名为A1(18,11)的矩阵和3个名为normsoffsetspriorita(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

我无法理解,因为矩阵看起来与我对齐。你能帮我理解这个错误吗?

2 个答案:

答案 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)