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

numpy中...与np.newaxis组合索引的含义及结果差异咨询

NumPy中...与np.newaxis的用法解析

先看你给出的测试代码(补充必要的导入语句):

import numpy as np
test_1 = np.zeros((2, 2))
test_2 = np.zeros((2, 2, 1))
print(test_1[..., np.newaxis])
print(test_1[np.newaxis])

执行结果:

[[[0.]
  [0.]]

 [[0.]
  [0.]]]
[[[0. 0.]
  [0. 0.]]]

1. ...的含义

在NumPy里,...是**Ellipsis(省略号)**的简写,作用是替代数组中「所有未被明确指定的维度」,相当于多个冒号:的组合:

  • 对于2维数组test_1,...就等价于:(取所有行)和:(取所有列),也就是test_1[..., np.newaxis]和test_1[:, :, np.newaxis]完全等价。
  • 如果是3维数组,...就等价于::,以此类推。

2. 两行索引代码输出不同的原因

np.newaxis的作用是在指定位置新增一个大小为1的维度,而...和np.newaxis的位置决定了新增维度的位置:

  • test_1[..., np.newaxis]:...占了原数组的所有维度(前两个维度),np.newaxis放在最后,所以是在原数组的最后一个维度之后新增维度。原数组形状(2,2)变成(2,2,1),每个元素都被包裹成单元素子数组,对应第一个输出结构。
  • test_1[np.newaxis]:np.newaxis放在最前面,也就是在原数组的第一个维度之前新增维度。原数组形状(2,2)变成(1,2,2),相当于把整个原数组当成一个元素,套进了新的外层数组里,对应第二个输出结构。

简单说就是:前者给每个元素加了一层「小包装」,后者给整个数组套了一层「大盒子」,最终的数组结构自然不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:15:43