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

不同维度NumPy数组相减结果疑问:为何输出为[[0,1]]?

为什么执行print(np.array([1,2])-np.array([[1,1]]))会得到[[0,1]]?

先明确两个参与运算的numpy数组的形态:

  • np.array([1,2])是1维数组,形状为(2,),可以理解成一行2个元素的序列
  • np.array([[1,1]])是2维数组,形状为(1,2),可以理解成包含一行2个元素的嵌套序列

这是numpy的广播机制在起作用——当两个形状不完全匹配的数组进行运算时,numpy会自动调整它们的形状,让元素能对应运算,核心规则是:

  • 从形状的最后一个维度开始比较,要么维度长度相同,要么其中一个维度的长度是1
  • 维度更少的数组会被“逻辑扩展”成和另一个数组相同的形状(不会实际复制数据,只是运算时按扩展后的形态处理)

具体到这个例子:

  1. 1维数组(2,)会被广播补位,逻辑上变成形状为(1,2)的数组,也就是[[1,2]]
  2. 此时两个数组形状均为(1,2),可以逐元素相减:
    • 第一个元素:1 - 1 = 0
    • 第二个元素:2 - 1 = 1
  3. 最终得到的运算结果就是[[0,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.06.26 21:04:52