Python 点(a,b)给出了关于具有相似维数的矩阵乘法的错误结果

Python 点(a,b)给出了关于具有相似维数的矩阵乘法的错误结果,python,numpy,matrix,matrix-multiplication,Python,Numpy,Matrix,Matrix Multiplication,设矩阵a,b为[1,2,3,4],即1×4维。 应用numpy.dota,b时,结果为30,而不是引发两个矩阵形状未对齐的异常。 mxn矩阵如何与mxn矩阵相乘?numpy是否会自动转置一个矩阵以对齐其形状,然后进行乘法 In [59]: a = b = np.matrix([1,2,3,4]) In [60]: np.dot(a.T, b) # 1 Out[60]: matrix([[ 1, 2, 3, 4], [ 2, 4, 6, 8],

设矩阵a,b为[1,2,3,4],即1×4维。 应用numpy.dota,b时,结果为30,而不是引发两个矩阵形状未对齐的异常。 mxn矩阵如何与mxn矩阵相乘?numpy是否会自动转置一个矩阵以对齐其形状,然后进行乘法

In [59]: a = b = np.matrix([1,2,3,4])

In [60]: np.dot(a.T, b)      # 1
Out[60]: 
matrix([[ 1,  2,  3,  4],
        [ 2,  4,  6,  8],
        [ 3,  6,  9, 12],
        [ 4,  8, 12, 16]])

In [63]: np.dot(a, b.T)      # 2
Out[63]: matrix([[30]])

In [64]: np.dot(a, b)        # 3
ValueError: shapes (1,4) and (1,4) not aligned: 4 (dim 1) != 1 (dim 0)
更一般地说,如果X的形状是m,n,Y的形状是n,p,那么np.dotX,Y 返回形状为m,p的数组,该数组是矩阵的结果 乘法运算

由于a.T具有形状4,1,而b具有形状1,4,因此矩阵乘法的结果是形状4,4的数组

由于a具有形状1,4,而b.T具有形状4,1,因此矩阵乘法的结果是形状1,1的数组

np.dota,b由于形状为1,4和1,4的数组不能进行矩阵相乘,因此会引发ValueError。NumPy从不自动变换轴

更一般地说,如果X的形状是m,n,Y的形状是n,p,那么np.dotX,Y 返回形状为m,p的数组,该数组是矩阵的结果 乘法运算

由于a.T具有形状4,1,而b具有形状1,4,因此矩阵乘法的结果是形状4,4的数组

由于a具有形状1,4,而b.T具有形状4,1,因此矩阵乘法的结果是形状1,1的数组

np.dota,b由于形状为1,4和1,4的数组不能进行矩阵相乘,因此会引发ValueError。NumPy从不自动变换轴


这与矩阵乘法不同。检查a和b的形状属性,它们很可能是一维4,而不是1,4。在本例中,dot计算两个向量之间的点积,给出标量输出30..问题已解决,开始学习numpy并将python列表与numpy数组混淆。按预期使用numpy数组。与矩阵乘法不同。检查a和b的形状属性,它们可能是一维4,而不是1,4。在本例中,dot计算两个向量之间的点积,给出标量输出30..问题已解决,开始学习numpy并将python列表与numpy数组混淆。按照预期使用numpy数组。刚开始学习numpy,对python列表和numpy数组感到困惑,两者都有很大的不同。按照预期使用numpy数组。刚开始学习numpy,对python列表和numpy数组感到困惑,两者都有很大的不同。按预期使用numpy阵列。