Numpy中转置转置,T和swapaxes的实例讲解

  

利用Python进行数据分析时,Numpy是最常用的库,经常用来对数组,矩阵等进行转置等,有时候用来做数据的存储。

  

        在[1]:进口numpy np      在[2]:arr=np.arange (16) .reshape (2, 2, 4)      在[3]:加勒比海盗   [3]:   阵列([[[0,1,2,3],   (4、5、6、7)),      [(8、9、10、11),   (12、13、14、15)]])      

如上图所示,将0-15放在一个2 2 4的矩阵当中,得到结果如上。

  

现在要进行装置置操作,比如

        在[4]:arr.transpose (1 0 2)   [4]:   阵列([[[0,1,2,3],   (8、9、10、11)),      [(4、5、6、7)   (12、13、14、15)]])      

  

每一个元素都分析一下,0位置在(0,0,0),转置为[1 0 2],相当于把原来位置在(0,1,2)的转置到[1 0 2],对0来说,位置转置后为(0,0,0),同理,对1(0,0,1]来说,转置后为[0,0,1],同理我们写出所有如下:

  

其中第一列是值,第二列是转置前位置,第三列是转置后,看到转置后位置,再看如上的结果,是不是就豁然开朗了?

        0 (0,0,0)(0,0,0)   1 (0,0,1][0,0,1]   2 (0,0,2)(0,0,2)   3 [0 0 3][0 0 3)   4 (0,1,0)(1,0,0)   5 (0,1,1)[1,0,1]   6 (0,1,2)[1 0 2]   7 (0,1,3)(1 0 3)   8 (1,0,0)(0,1,0)   9 [1,0,1][0,1,1)   10 [1 0 2][0,1,2)   11 [1 0 3][0,1,3)   12 [1 1 0][1 1 0]   13 (1 1 1)(1,1,1)   14 [1,2][1,2]   15 (1,1,3)(1,1,3)      

<强>再看另一个结果:

        在[20]:arr.T   [20]:   阵列([[[0,8],   [4,12]],   [[1,9],   [5,13]],   [[2,10],   [6、14]],   [[3,11],   [7、15]]])   在[21]:arr.transpose (2, 1, 0)   [21]:   阵列([[[0,8],   [4,12]],   [[1,9],   [5,13]],   [[2,10],   [6、14]],   [[3,11],   [7、15]]])      

<强>再对比转置前后的图看一下:

        0 (0,0,0)(0,0,0)   1 (0,0,1](1,0,0)   2 (0,0,2)[2,0,0)   3 [0 0 3][3,0,0)   4 (0,1,0)(0,1,0)   5 [0,1,1][1 1 0]   6 (0,1,2)(2,1,0)   7 [0,1,3][3 1 0]   8 (1,0,0)[0,0,1]   9 [1,0,1][1,0,1]   10 [1 0 2][2,0,1]   11 [1 0 3][0,1]   12 [1 1 0][0,1,1)   13 (1 1 1)(1,1,1)   14 [1,2](2,1,1)   15 (1,1,3)[3 1 1]      

瞬间就明白转置了吧!其实只要动手写写,都很容易明白的。另外T其实就是把顺序全部颠倒过来,如下:

        在[22]:arr3=np.arange (16) .reshape (2, 2, 2, 2)   在[23]:arr3   [23]:   数组([[[[0,1],   [2、3]],   [(4、5),   [6、7]]],   [[(8、9),   [10 11]],   [[12 13],   [14,15]]]])   在[24]:arr3.T   [24]:   数组([[[[0,8],   [4,12]],   [[2,10],   [6、14]]],   9],[[[1   [5,13]],   [[3,11],   [7、15]]]])   在[25]:arr3.transpose (3 2 1 0)   [25]:   数组([[[[0,8],   [4,12]],   [[2,10],   [6、14]]],   9],[[[1   [5,13]],   [[3,11],   [7、15]]]])      

转置就是这样子,具体上面aar3转置前后的位置,就不写了。

  

  

话不多,上结果

        在[27]:arr.swapaxes (1、2)   [27]:   数组([[[0,4],   (1、5),   (2,6),   [3,7]],      [[8 12],   (9、13),   (10、14),   [11、15]]])      在[28]:arr.transpose (0、2、1)   [28]:   数组([[[0,4],   (1、5),   (2,6),   [3,7]],      [[8 12],   (9、13),   (10、14),   [11、15]]])   之前      

发现了吧,其实swapaxes其实就是把矩阵中某两个轴对换一下,不信再看一个:

        在[29]:arr3   [29]:   数组([[[[0,1],   [2、3]],   [(4、5),   [6、7]]],   [[(8、9),   [10 11]],   [[12 13],   [14,15]]]])   在[30]:arr3.swapaxes (1、3)   [30]:   数组([[[[0,4),   [2,6]],   [[1,5],   [3、7]]],   [[[8 12],   [10、14]],   13][[9日,   [11、15]]]])   在[31]:arr3.transpose (0、3、2、1)   [31]:   数组([[[[0,4),   [2,6]],   [[1,5],   [3、7]]],   [[[8 12],   [10、14]],   13][[9日,   [11、15]]]])      

哈哈,只要动手做做,会发现其实没有那么困难,不能只看。

  

纸上得来终觉浅,绝知此事要躬行!共勉!

  

Numpy中转置转置,T和swapaxes的实例讲解