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

NumPy ndarray索引后形状不符,如何获取(10,3)的目标形状?

解决NumPy索引后数组形状不符合预期的问题

问题场景

运行以下代码后,得到的数组形状是(3,10),但预期是(10,3):

x = np.ones((10,10,10))
x = x[2,:,[2,3,7]]
print(x.shape)

解决方法

方法1:分步索引

先提取前两个维度的目标部分,再索引第三维度(此时已变为二维数组的第二维度):

x = np.ones((10,10,10))
x = x[2,:,:][:,[2,3,7]]
print(x.shape)  # 输出 (10,3)

方法2:转置调整维度顺序

直接对索引后的数组进行转置操作,快速调换维度顺序:

x = np.ones((10,10,10))
x = x[2,:,[2,3,7]].T
print(x.shape)  # 输出 (10,3)

方法3:使用np.take指定轴

通过np.take函数明确指定索引的轴,避免维度顺序混乱:

import numpy as np
x = np.ones((10,10,10))
x = np.take(x[2,:,:], [2,3,7], axis=1)
print(x.shape)  # 输出 (10,3)

原因说明

当在三维数组中混合使用单元素索引(第一维度的2)、切片(第二维度的:)和列表索引(第三维度的[2,3,7])时,NumPy的索引规则会将列表索引对应的维度前置,导致最终形状变为(3,10)。通过上述方法可以调整维度顺序,得到预期的(10,3)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 18:05:21