transpose是什么意识呢? 看如下例子:
arr1 = np.arange(16).reshape((2,2,4))
arr1
arr1
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
这是原来的矩阵。如果对其进行转置,执行arr2 = arr1.transpose((1,0,2))
得到:array([[[ 0, 1, 2, 3],
[ 8, 9, 10, 11]],
[[ 4, 5, 6, 7],
[12, 13, 14, 15]]])
过程是怎样的?
对于高维数组,transpose需要得到一个由轴编号组成的元组才能对这些轴进行转至(比较难理解)
提示:transpose(1,0,2)中的(1,0,2)可以这么理解,他是调换arr1.shape的顺序,咱来给arr1.shape标一下角标哈,(2[0], 2[1], 4[2]) [ ] 里是shape的索引。
transpose((1, 0, 2)) 的意思是 按照这个顺序 重新设置shape 也就是 (2[1], 2[0], 4[2])
表示第0个轴和第1个轴上面的元素互换,转置后的reshape还是(2,2,4)
比如原来位置(0,1,0)上的元素为4,现在把它放到了(1,0,0)这个位置,就是下面那个位置由8变成了4