numpy中为数组添加新轴后执行加法的计算逻辑是怎样的?
计算过程拆解
核心是NumPy的维度扩展(newaxis)和广播机制共同作用得到结果,逐步骤解析如下:
- 第一步:生成基础一维数组
x = np.arange(0,4,1)会生成一个长度为4的一维数组,内容为:[0, 1, 2, 3]
代码里的x[:6]切片不会改变数组内容,因为x本身只有4个元素,切片长度超出数组实际长度时,只会返回全部现有元素。 - 第二步:用
np.newaxis调整数组维度np.newaxis的作用是给数组新增一个维度:x[:6, np.newaxis]:把原一维数组转成4行1列的二维列向量,shape为(4,1),内容如下:
[[0] [1] [2] [3]]x[np.newaxis, :]:把原一维数组转成1行4列的二维行向量,shape为(1,4),内容如下:
[[0, 1, 2, 3]] - 第三步:广播机制执行逐元素相加
当两个shape分别为(4,1)和(1,4)的数组做加法时,NumPy会自动触发广播规则,把两个数组都扩展成4行4列的数组,再对应位置相加:- 4行1列的列向量会自动复制列,变成每行都是同一个值的4行4列数组
- 1行4列的行向量会自动复制行,变成每列都是同一个值的4行4列数组
最终每个第i行第j列的单元格数值就是列向量第i个值 + 行向量第j个值,也就是i + j,和你给出的输出结果完全匹配。
内容的提问来源于stack exchange,提问作者lightstream
相关产品推荐
相关产品推荐

