简体   繁体   English

Numpy:如何撤消转置

[英]Numpy: How to undo a transpose

A = np.arange(36).reshape(6,6)
B = A.reshape(-1,3,2,3)
C = B.transpose(0,2,1,3)

I have a matrix A , which looks like我有一个矩阵A ,它看起来像

[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]
 [24 25 26 27 28 29]
 [30 31 32 33 34 35]]

and have transformed it into C , which looks like并将其转换为C ,看起来像

[[[[ 0  1  2]
   [ 6  7  8]
   [12 13 14]]

  [[ 3  4  5]
   [ 9 10 11]
   [15 16 17]]]


 [[[18 19 20]
   [24 25 26]
   [30 31 32]]

  [[21 22 23]
   [27 28 29]
   [33 34 35]]]]

How would I transform C back into A?我如何将 C 变回 A? I have tried following this guide https://stackoverflow.com/a/32034565/5131031 , however, I was not successful.我曾尝试遵循本指南https://stackoverflow.com/a/32034565/5131031 ,但是,我没有成功。

You can transpose on the same axes and reshape back to the original:您可以在相同的轴上转置并重塑回原始状态:

import numpy as np

A = np.arange(36).reshape(6,6)
B = A.reshape(-1,3,2,3)
C = B.transpose(0,2,1,3)

C.transpose(0,2,1,3).reshape(6,6)

result:结果:

array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23],
       [24, 25, 26, 27, 28, 29],
       [30, 31, 32, 33, 34, 35]])

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM