官方文档:https://docs.scipy.org/doc/numpy/reference/generated/numpy.transpose.html
1 numpy.transpose
numpy.transpose(a, axes=None)
Parameters: | a:Input array,输入数组 axes:可选,整型list。默认情况下,反转维度,否则根据给定的值对轴进行排列。 |
---|---|
Returns: | 数组。a的坐标轴被打乱了。只要有可能,就会返回一个视图。 |
栗子1:不加参数的情况下,transpose()的作用就是整个矩阵完全置换
import numpy as np
A = np.arange(24).reshape(2, 3, 4)
print(A.shape)
print(A)
# result
shape: (2, 3, 4)
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]]]
------------------------------------------
T = A.transpose()
print(T.shape)
print(T)
# result
shape: (4, 3, 2)
T: [[[ 0 12]
[ 4 16]
[ 8 20]]
[[ 1 13]
[ 5 17]
[ 9 21]]
[[ 2 14]
[ 6 18]
[10 22]]
[[ 3 15]
[ 7 19]
[11 23]]]
------------------------------------------
print(A[1, 2, 3])
print(T[3, 2, 1])
#result
23
23
栗子2:加参数时,必须根据矩阵的维度来设置参数
import numpy as np
#对于该矩阵可以认为有三个维度,即0,1,2
A = np.arange(24).reshape((2,3,4))
print(A.shape)
print(A)
#如果不改变原矩阵,那么正常的参数顺序是:(0,1,2)
T1 = A.transpose(0,1,2)
print(T1.shape)
print(T1)
print('_____________________')
#如果想要置换第1和第2个维度,则参数顺序为:(1, 0 ,2)
T2 = A.transpose(1,0,2)
print(T2.shape)
print(T2)
print('_____________________')
#如果要置换第1和第3个维度,则参数的顺序为:(2,1,0)
T = A.transpose(2,1,0)
print(T3.shape)
print(T3)
# result
A.shape: (2, 3, 4)
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]]]
_____________________
T1.shape (2, 3, 4)
T1: [[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
_____________________
T2.shape: (3, 2, 4)
T2: [[[ 0 1 2 3]
[12 13 14 15]]
[[ 4 5 6 7]
[16 17 18 19]]
[[ 8 9 10 11]
[20 21 22 23]]]
_____________________
T3.shape: (4, 3, 2)
T3: [[[ 0 12]
[ 4 16]
[ 8 20]]
[[ 1 13]
[ 5 17]
[ 9 21]]
[[ 2 14]
[ 6 18]
[10 22]]
[[ 3 15]
[ 7 19]
[11 23]]]
通俗理解:shape=(C,H,W),也就是有C个H*W的二维矩阵。不管怎么转置,第一位为C,第二位为H,第三位W,这是恒定不变的,变得只是其对应的数值。比如shape=(3,4,5),有3个4*5的二维矩阵组成的三维矩阵,此时通过transpose变换,shape=(4,3,5),有4个3*5的矩阵组成的三维矩阵。这样想就很容易看出来是怎样变换的了。
参考:https://blog.csdn.net/oMoDao1/article/details/81776961