numpy.transpose()
transpose 作用是改变序列,但不改变原数组
a.T
就是转置 = a.transpose() 也不改变原数组
# np.transpose() 改变数组的序列,但不改变原数组
# 针对二维数组,等同于转置
a = np.array([[3.0, 9.0, 8.0, 0.0],[1.0, 4.0, 6.0, 5.0]])
print(a) # [[3. 9. 8. 0.] [1. 4. 6. 5.]]
print(a.shape) # (2, 4)
a.transpose() # = a.T
b = a.transpose()
print(a) # # [[3. 9. 8. 0.] [1. 4. 6. 5.]]
print(a.shape) # (2, 4)
print(b) # [[3. 1.] [9. 4.] [8. 6.] [0. 5.]]
print(b.shape) # (4,2)
多试几次就能试明白了。
或者针对单个数的位置调换来判断。
# # 针对多维数组
a = np.arange(24).reshape((2, 3, 4))
print(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]]]
print(a.transpose()) # 如果没有参数,默认‘转置’[::-1] # = a.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.transpose().shape) # (4, 3, 2)
# transpose进行的操作其实是将各个维度重置,原来(2,3,4)对应的是(0,1,2)。
# 使用transpose(1,0,2)后,各个维度大小变为(3,2,4),其实就是将第一维和第二维互换。
print(a.transpose(1,0,2)) #shape:(3,2,4)
#[[[ 0 1 2 3]
# [12 13 14 15]]
# [[ 4 5 6 7]
# [16 17 18 19]]
# [[ 8 9 10 11]
# [20 21 22 23]]]
print(a.transpose(2,0,1)) #shape:(4,2,3)
# [[[ 0 4 8]
# [12 16 20]]
# [[ 1 5 9]
# [13 17 21]]
# [[ 2 6 10]
# [14 18 22]]
# [[ 3 7 11]
# [15 19 23]]]
print(a.transpose(0,2,1)) # shape:(2,4,3)
# [[[ 0 4 8]
# [ 1 5 9]
# [ 2 6 10]
# [ 3 7 11]]
# [[12 16 20]
# [13 17 21]
# [14 18 22]
# [15 19 23]]]
参考:感激!!
https://blog.csdn.net/u012762410/article/details/78912667
https://blog.csdn.net/liangzuojiayi/article/details/51537314