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

关于Numpy一维与二维数组相乘结果不符的疑问

问题原因解析

这是numpy广播机制导致的结果,核心是数组维度的匹配规则:

  • 先明确两个数组的形状:
    • a = np.array([1,2,3]) 的形状是 (3,),属于一维数组
    • b = np.array([[1]]) 的形状是 (1,1),属于二维数组

numpy执行元素级乘法时,会从最后一个维度开始对齐;如果维度数不一致,会自动给低维数组补前导维度。这里a会被自动扩展为形状 (1,3) 的二维数组,而b的第二个维度是1,会被扩展成和a对应维度一致的3——也就是b变成形状 (1,3)、元素全为1的数组。

两者对应元素相乘后,结果就是形状 (1,3) 的数组 [[1,2,3]]。

如果想得到预期的 [[1],[2],[3]](形状 (3,1)),只需把a改成列向量形式,比如:

a = np.array([1,2,3]).reshape(3,1)
result = a * b

此时a的形状是 (3,1),b的形状 (1,1) 会被扩展为 (3,1),相乘后就能得到你想要的结果。

内容的提问来源于stack exchange,提问作者Ujjawal Bindal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 21:54:56