Python 简单的矩阵乘法会抛出一个错误;形状(2,3)和(2,3)未对齐:3(尺寸1)!=2(尺寸0)“;?

Python 简单的矩阵乘法会抛出一个错误;形状(2,3)和(2,3)未对齐:3(尺寸1)!=2(尺寸0)“;?,python,numpy,matrix-multiplication,Python,Numpy,Matrix Multiplication,我试图将两个矩阵相乘,这给了我一个错误“形状(2,3)和(2,3)未对齐:3(尺寸1)!=2(尺寸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)未对齐:3(尺寸1)!=2(尺寸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;

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

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]])

如果你真的想做矩阵乘法(线性代数),请参阅上面其他人的评论。

这是关于基本线性代数定义的数学错误,而不是编程问题。不能将2*3矩阵乘以2*3矩阵,因为矩阵乘法的定义根本不适用于该场景,因为构成线性变换的基本数学解释w.r.t.某些基础不适用于此类场景。你到底想做什么?现在几乎没有理由使用
np.matrix
。使用原始的
ndarray
np.dot(arr,arr1)
arr@arr1
做同样的事情-矩阵乘法。基本规则(你应该从学校数学中记住)是
arr
的最后一个维度应该与
arr1
的第二个到最后一个维度相匹配
arr*arr1
应该可以工作,因为所有维度都匹配。但这是元素级乘法-,ζ-,我只是想做简单的矩阵乘法。非常感谢你。但我现在真的觉得自己很愚蠢。英雄联盟