You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

二维与一维矩阵乘法疑问:(2x3)与(1x3)相乘为何得(2,)结果?

问题解答

首先要明确:Numpy里的一维数组(比如你例子里的y = np.ones(3),形状是(3,))不是严格意义上的行向量或列向量,它是秩为1的数组,和线性代数中的向量表现有所不同。

np.dot对于二维数组(矩阵)和一维数组的运算规则是:

  • 当第一个参数是二维数组(形状(m,n)),第二个参数是一维数组(形状(n,))时,np.dot会自动将一维数组视为列向量(形状(n,1))执行矩阵乘法,得到的结果理论上是形状(m,1)的二维数组,但Numpy会自动将其压缩为一维数组(形状(m,)),也就是你看到的array([6.,15.])。

如果想要得到严格线性代数意义下的(2,1)形状结果,可以把一维数组转换为二维列向量:

import numpy as np

x = np.array([[1., 2., 3.], [4., 5., 6.]])
y = np.ones(3).reshape(3, 1)  # 转为(3,1)的列向量

np.dot(x, y)

运行结果:

array([[ 6.],
       [15.]])

反过来,如果把一维数组当作行向量和二维数组做乘法,需要用np.dot(y, x),此时Numpy会把y视为行向量(1,3),运算后得到形状(1,2)的二维数组,同样也可以被压缩为一维数组(2,)。


内容的提问来源于stack exchange,提问作者Mostafa Hosseini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 03:16:05