NumPy 为什么会报维度不匹配的错误?

4

我有一个矩阵,存储在一个名为M的变量中。 然后我使用:

 dist = np.dot(M[0], M[0])

我总是遇到错误,最终导致:

  File "/usr/lib/python2.7/dist-packages/scipy/sparse/base.py", line 246, in __mul__
      raise ValueError('dimension mismatch')
  ValueError: dimension mismatch

我真的不明白这个语句为什么会因为维度不匹配而失败 - 我在第一个和第二个数组中都使用了M [0]参数,它们的大小相同。


1
展示一下 M[0] 包含了什么。 - Matt Ball
你是真的指M是一个矩阵,还是只是一个普通的ndarray?如果它是一个ndarray,它的维度是什么? - user2357112
1个回答

3

如果M是一个X行Y列的矩阵,那么M[0]是1行Y列的。除非Y等于1,否则不能将两个1行Y列的矩阵相乘。


M = np.array([[1,2,3], [4,5,6], [7,8,9]]); np.dot(M[0], M[0]) 的结果是14,正如我所预期的。 - Prashant Kumar
那不是一个矩阵。那是一个ndarray。 - user2357112
好的点子!也许原帖作者期望的是ndarray的行为。 - Prashant Kumar
1
如果OP有“matrix”对象,则np.dot(M[0], M[0].T)应该给出@Prashant的结果。 - Jaime

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接