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)不作任何改变。

posted @ 2018-10-28 17:57  我的下铺刚田武  阅读(823)  评论(0编辑  收藏  举报