【问题标题】:A simple matrix multiplication throws an error "shapes (2,3) and (2,3) not aligned: 3 (dim 1) != 2 (dim 0)"?简单的矩阵乘法会引发错误“形状 (2,3) 和 (2,3) 未对齐:3 (dim 1) != 2 (dim 0)”?
【发布时间】:2019-12-27 03:03:39
【问题描述】:

我试图将两个矩阵相乘,这给了我一个错误“形状 (2,3) 和 (2,3) 未对齐:3 (dim 1) != 2 (dim 0)”。代码如下。请让我知道我做错了什么?

 from numpy import *
    arr=array([[1,32,3],[2,4,6]])
    arr1=array([[1,2,39],[2,41,6]])
    m=matrix(arr)
    m1=matrix(arr1)
    print(m)
    print(m1)
    mat=m1*m;

【问题讨论】:

  • 这是关于基本线性代数定义的数学错误,而不是编程问题。您不能将 2*3 矩阵乘以 2*3 矩阵,因为矩阵乘法的定义根本不适用于该场景,因为组合线性变换 w.r.t. 的基本数学解释。在这种情况下,某些基础不能适用。你到底想做什么?
  • 现在几乎没有理由使用np.matrix。使用原始的 ndarraynp.dot(arr,arr1)arr@arr1 执行相同的操作 - 矩阵乘法。基本规则(你应该从学校数学中记住)是arr 的最后一个维度应该匹配arr1 的第二个到最后一个维度。 arr*arr1 应该可以工作,因为所有尺寸都匹配。但这是逐元素乘法。
  • @ReinstateMonica-ζ-- 我只是想做简单的矩阵乘法。非常感谢。但我现在真的觉得自己好傻。大声笑

标签: python numpy matrix-multiplication


【解决方案1】:

如果您尝试进行逐元素乘法(即 1*1、32*2、3*39、2*2、4*41、6*6),那么您需要使用 numpy.相乘。

import numpy as np
a = np.matrix([[1,32,3],[2,4,6]])
b = np.matrix([[1,2,39],[2,41,6]])
np.multiply(a,b)

返回这个

matrix([[  1,  64, 117],
        [  4, 164,  36]])

如果您真的想做矩阵乘法(线性代数),请查看上面其他人的 cmets。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-12
    • 2021-05-09
    • 1970-01-01
    • 2022-01-16
    • 2019-03-21
    • 2021-04-25
    • 2017-02-11
    • 2020-01-29
    相关资源
    最近更新 更多