colmn向量乘法错误ValueError:matmul:输入操作数1的核心维度不匹配0

时间:2020-07-02 17:45:30

标签: python numpy scipy matrix-multiplication

我想通过以下方式将5x1矩阵与1x1矩阵相乘。每次出现以下错误

ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?)

这是我尝试的方式。请帮助我在此处调试特定实例

>>> m = np.ones(5)
>>> x = np.ones(1)
>>> m.shape
(5,)
>>> x.shape
(1,)
>>> m@x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 1 is different from 5)
>>> m.transpose()@x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 1 is different from 5)

2 个答案:

答案 0 :(得分:0)

您的数组m的形状不是5 x 1。像逐行一样。

左操作数的列数应与右操作数的行数匹配。因此,当您执行m @ x时,根据矩阵乘法规则,它无效。

这样做吧:

>>> m.reshape(-1, 1) @ x

它使行向量m用作形状为(5,1)的列向量。 x也有一行,因此是有效的矩阵乘法。

答案 1 :(得分:0)

您有2个1d数组,打印时的形状为(5,)和(1,)。这些不是IamInstanceProfile: !GetAtt ListS3BucketsInstanceProfile.Arn tokenize = udf(spacy_tokenizer, ArrayType(StringType()))

column vectors文档对其如何处理一维数组的描述可能会有些混乱。我更喜欢row vectors文档。它将两个一维数组视为矢量点/内积。无论哪种情况,两个数组都具有匹配的大小。

一些有效的形状组合:

matmul

对于2d(及更高版本)的数组,A的最后一个暗度必须与B的第二个匹配至最后一个。这是对行和列向下规则进行的经典手动扫描。