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

Numpy数组transpose方法(1,0,2)轴置换的操作原理详解

NumPy中transpose((1,0,2))的轴变换过程详解

首先明确原数组的轴信息:你创建的my_array是形状为(2, 2, 4)的三维数组,三个轴的编号和对应维度大小分别是:

  • 轴0(第一个维度):大小2,对应数组最外层的两个大区块
  • 轴1(第二个维度):大小2,对应每个大区块内的两个子数组
  • 轴2(第三个维度):大小4,对应每个子数组里的单个元素

transpose参数的核心含义

np.transpose((1, 0, 2))里的元组是新数组的轴与原数组轴的对应关系:

  • 新数组的轴0 ↔ 原数组的轴1
  • 新数组的轴1 ↔ 原数组的轴0
  • 新数组的轴2 ↔ 原数组的轴2(保持不变)

简单说就是把原数组的轴0和轴1互换,轴2维持原样。

元素索引的映射规则

三维数组中每个元素的位置用(轴0索引, 轴1索引, 轴2索引)标记,比如原数组里的元素4,索引是(0, 1, 0);元素8的索引是(1, 0, 0)。

经过transpose((1,0,2))变换后,元素的新索引变为(原轴1索引, 原轴0索引, 原轴2索引):

  • 原索引(0,1,0)的元素4,新索引是(1,0,0),对应结果数组第二块第一行的第一个元素
  • 原索引(1,0,0)的元素8,新索引是(0,1,0),对应结果数组第一块第二行的第一个元素

结合数组结构看变换过程

原数组的结构是:

# 轴0的两个区块
区块0:[[0,1,2,3], [4,5,6,7]]  # 轴1的两个子数组
区块1:[[8,9,10,11], [12,13,14,15]]

变换后,轴0和轴1互换,相当于把原轴1的子数组作为新数组的轴0区块,同时把原轴0的区块作为新数组每个轴1位置的子数组:

  • 新数组的区块0(轴0=0):取原数组每个轴0区块里轴1=0的子数组 → 原区块0的[0,1,2,3] + 原区块1的[8,9,10,11]
  • 新数组的区块1(轴0=1):取原数组每个轴0区块里轴1=1的子数组 → 原区块0的[4,5,6,7] + 原区块1的[12,13,14,15]

最终得到的结果和你给出的变换后数组完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:12:49