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

求助:NumPy中transpose函数的用法及参数作用解析

NumPy transpose 函数用法详解(结合你的代码示例)

核心本质

numpy.transpose() 就是重新排列数组的轴(维度)顺序,参数是轴的索引列表,用来指定新数组的轴对应原数组的哪个轴。


先从你的补充示例(2维数组)入手

这是最直观的矩阵转置场景:

import numpy as np
my_list = [[1,2],[3,4]]
arr = np.array(my_list)

perm_testing = [1,0]
testing = arr.transpose(perm_testing)
print(testing)

输出:

[[1 3]
 [2 4]]

解析:

  • 原数组 arr 的形状是 (2,2),对应两个轴:
    • 轴0:行维度,长度2(对应[1,2]和[3,4]这两行)
    • 轴1:列维度,长度2(对应每行里的两个元素)
  • 参数 [1,0] 表示:新数组的第0轴用原数组的轴1(列),新数组的第1轴用原数组的轴0(行)
  • 结果就是把原数组的行和列互换,也就是标准的矩阵转置。

再看你的高维数组示例

import numpy as np
my_list = [[[[[[1,2],[3,4]],[[1,2],[3,4]]], [[[1,2],[3,4]],[[1,2],[3,4]]]],[[[[1,2],[3,4]],[[1,2],[3,4]]], [[[1,2],[3,4]],[[1,2],[3,4]]]]], [[[[[1,2],[3,4]],[[1,2],[3,4]]], [[[1,0],[1,1]],[[1,0],[1,1]]]],[[[[1,0],[1,1]],[[1,0],[1,1]]], [[[1,0],[1,1]],[[1,0],[1,1]]]]]]
arr = np.array(my_list)
perm_testing = [0,1,2,3,4,5]
testing = arr.transpose(perm_testing)
print(testing)

解析:

  • 先看原数组的形状:arr.shape 会输出 (2,2,2,2,2,2),这是一个6维数组,每个维度的长度都是2,轴索引从0到5(对应你嵌套列表的6层结构)。
  • 参数 [0,1,2,3,4,5] 和原数组的轴顺序完全一致,相当于告诉transpose“不用换轴”,所以转置后的数组和原数组完全相同,没有任何变化。
  • 如果想看到变化,你可以修改参数,比如改成 [1,0,2,3,4,5],这会把原数组的前两个轴交换,此时数组的形状还是(2,2,2,2,2,2),但元素的排列会发生对应变化——原数组中arr[i,j,k,l,m,n]的元素,会出现在新数组的testing[j,i,k,l,m,n]位置。

关键总结

  • 轴的索引从0开始,N维数组对应0到N-1的轴索引。
  • transpose的参数是一个轴索引的排列列表,新数组的第n个轴 = 原数组的第参数列表[n]个轴。
  • 可以通过arr.shape和testing.shape快速验证轴顺序变化后的形状(比如原形状(2,3,4),用transpose([2,1,0])后形状会变成(4,3,2))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:40:24