求助: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(对应每行里的两个元素)
- 轴0:行维度,长度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
相关产品推荐
相关产品推荐

