import numpy as np
三維數組
arr1 = np.arange(16).reshape((2, 2, 4))
#[[[ 0 1 2 3]
# [ 4 5 6 7]]
# [[ 8 9 10 11]
# [12 13 14 15]]]
arr2=arr1.transpose((1,0,2))
#[[[ 0 1 2 3]
# [ 8 9 10 11]]
#
# [[ 4 5 6 7]
# [12 13 14 15]]]
正序爲(0,1,2),數組爲
#[[[ 0 1 2 3]
# [ 4 5 6 7]]
#[[ 8 9 10 11]
#[12 13 14 15]]]
tanspose(1,0,2),數組變爲
#[[[ 0 1 2 3]
#[ 8 9 10 11]]
# [[ 4 5 6 7]
# [12 13 14 15]]]
可以看到轉置後的數組和轉置前的數組的區別就是第一頁的第二行和第二頁的第一行對換了。
索引與對應值的變換
arr3=arr1.transpose((0,2,1))
# [[[ 0 4]
# [ 1 5]
# [ 2 6]
# [ 3 7]]
#
# [[ 8 12]
# [ 9 13]
# [10 14]
# [11 15]]]
arr4=arr1.transpose((2,0,1))
#[[[ 0 4]
# [ 8 12]]
#
# [[ 1 5]
# [ 9 13]]
#
# [[ 2 6]
# [10 14]]
#
# [[ 3 7]
# [11 15]]]
這裏要注意的是,arr4數組變成4頁,這是因爲頁碼和行碼對換之後,
頁碼從數量2,變成了4
而行碼從數量4,變成了2
arr5=arr1.transpose((2,1,0))
#[[[ 0 8]
# [ 4 12]]
#
# [[ 1 9]
# [ 5 13]]
#
# [[ 2 10]
# [ 6 14]]
#
# [[ 3 11]
# [ 7 15]]]
arr6=arr1.transpose((1,2,0))
#[[[ 0 8]
# [ 1 9]
# [ 2 10]
# [ 3 11]]
#
# [[ 4 12]
# [ 5 13]
# [ 6 14]
# [ 7 15]]]
另外,轉置(2,0,1)可以看成,先轉置(0,2,1)再轉置(1,0,2)
轉置(2,1,0)可以看成,先轉置(1,0,2),然後轉置(0,2,1),最後轉置(1,0,2)
轉置(1,2,0)可以看成,先轉置(1,0,2),在轉置(0,2,1)
代碼可以寫成
python arr4=arr1.transpose(0,2,1).transpose(1,0,2) #[[[ 0 4] # [ 8 12]] # # [[ 1 5] # [ 9 13]] # # [[ 2 6] # [10 14]] # # [[ 3 7] # [11 15]]]
結果一樣