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

numpy数组使用-1索引后维度缺失问题咨询

NumPy数组索引后维度消失的问题解答

你遇到的问题核心是NumPy中整数索引与切片索引的行为差异:

  • 使用:-1这类切片形式时,会保留原数组的维度,因此a[:,:-1,:]得到(2,4,3),符合预期;
  • 而使用-1这类单个整数索引时,NumPy会自动挤压掉该维度,导致原本的第二维度消失,所以a[:,-1,:]的shape变为(2,3)。

验证与解决方法

如果想要保留第二维度,得到(2,1,3)的结果,可通过以下两种方式实现:

  1. 用切片形式选取单个元素,将-1改为-1::
import numpy as np
a = np.random.rand(2,5,3)
y = a[:,-1:,:]  # 切片索引保留维度
print(y.shape)  # 输出 (2, 1, 3)
  1. 手动添加维度,使用np.expand_dims:
y = np.expand_dims(a[:,-1,:], axis=1)
print(y.shape)  # 输出 (2, 1, 3)

原代码与输出

你的原代码:

import numpy as np
a = np.random.rand(2,5,3)
print(a)
x = a[:,:-1,:]
y = a[:,-1,:]
print(x.shape)
print(y.shape)

输出结果:

[[[0.18648295 0.45018899 0.37269369]
  [0.28727699 0.74595982 0.24410613]
  [0.73484484 0.62852367 0.71091093]
  [0.82692484 0.93791066 0.31497567]
  [0.5506998  0.3992407  0.55229818]]

 [[0.33900664 0.37279058 0.59162413]
  [0.18841992 0.94866945 0.7417921 ]
  [0.67865254 0.61119384 0.49094303]
  [0.07091689 0.55436234 0.80671508]
  [0.37598695 0.96572699 0.04268124]]]
(2, 4, 3)
(2, 3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 02:12:09