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

Numpy使用None与冒号的数组切片运算结果疑问

Numpy代码运行结果解释
  • 第一步:明确初始数组维度
    初始定义的A = np.array([0, 1])、B = np.array([0, 1])都是形状为(2,)的一维数组。
  • 第二步:None的作用说明
    numpy中None是np.newaxis的简写,作用是给数组新增一个长度为1的维度,新增维度的位置由None在索引中的位置决定:
    • 执行B = B[:, None]后,B在第二个维度新增轴,形状从(2,)变为(2, 1)
    • 比较语句中的A[None, :]是给A在第一个维度新增轴,形状从(2,)变为(1, 2)
    • 比较语句中的B[:, None]是给已经是(2,1)的B在第二个维度新增轴,形状最终变为(2, 1, 1)
  • 第三步:广播规则下的比较逻辑
    numpy中不同形状的数组做运算时会自动触发广播机制,规则如下:
    1. 先给维度更少的数组在最前面补长度为1的维度,直到两个数组维度数一致
    2. 对应维度的长度要么相等,要么其中一个为1,否则会抛出维度不匹配错误
    3. 最终运算结果的形状为各维度长度的最大值
      本次比较中,A[None, :]是2维数组,会先在最前面补1得到(1, 1, 2)的形状,和形状为(2, 1, 1)的B做广播后,最终输出结果的形状为(2, 1, 2),和你拿到的输出结构完全对应。
  • 第四步:逐值比较过程
    广播后相当于B的每个元素都会和A的所有元素逐一比较:
    • 第一个B元素值为0:0 == 0 → True,0 == 1 → False,得到第一组结果[[ True False]]
    • 第二个B元素值为1:1 == 0 → False,1 == 1 → True,得到第二组结果[[False True]]
      两组结果拼接就是你看到的最终输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:36:01