transpose()、T
from numpy import * a=arange(24).reshape(2,3,4) b=a.transpose(1,0,2)
print(a) print(b)
输出:
[[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]] *************** [[[ 0 1 2 3] [12 13 14 15]] [[ 4 5 6 7] [16 17 18 19]] [[ 8 9 10 11] [20 21 22 23]]]
transpose的置换有两层含义:元素位置的变化、数组shape的变化
要理解transpose里参数意义,首先要看x的shape属性,
输入 x.shape, 返回一个无组(2,3,4) 就如你设定的,reshape(2,3,4)
(2,3,4)这个元组的索引(0,1,2) 0对应2,1对应3,2对应4. .
这个由数组X的shape属性的索引组成的元组,才是transpose的真正的意义
代码中transpose参数元组(1,0,2)可以理解为是索引组成的元组,
1对应的还是3,0对应的还是2,2对应的还是4, 通过索引的位置变换,数组X的shape属性为(3,2,4)
**************分隔线*************
如果transpose参数元组(0,2,1),则数组X的shape属性为(2,4,3)
**************分隔线*************
没有进行transpose变换前,每个数都有一个索引,如13的索引为 (1,0,1)
按照上面的变换,13的索引为(0,1,1)
是不是在 下面的那个位置了? 其它的数字也一样,再如 19 ,之前的索引为(1,1,3),
按照上面的变换,13的索引为(1,1,3) 没为变,
http://bbs.pinggu.org/thread-4565507-1-1.html
https://blog.csdn.net/qq_18989901/article/details/73142472
https://www.cnblogs.com/sunshinewang/p/6893503.html
T即为完全转置,相当于transpose(),也相当于transpose(2,1,0)。
transpose(0,1,2)不作任何改变。