网上看到这样一个问题,研究了一下,
import numpy as np
x = np.arange(24).reshape((2,3,4))
print(x)
print(x.transpose((1,0,2))) # shape(3,2,4)
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
[[[ 0 1 2 3]
[12 13 14 15]]
[[ 4 5 6 7]
[16 17 18 19]]
[[ 8 9 10 11]
[20 21 22 23]]]
自己的理解是:x原本是(2,3,4)的结构:2表示维数,中间两个'] ]'所在即为其中1维,3*4是每1维里列表的结构。
现在x.transpose(1,0,2),其中 1 ,0,2分别代表 原先结构 (2,3,4)中索引第 1 ,0,2的位置,因此转置后换成(3,2,4)的结构;同时每一维内的值按照索引会依次向下一维填入。
例如,若x.transpose(2,1,0),则表示数组换成了(4,3, 2)的结构:显示结果为
[[[ 0 12]
[ 4 16]
[ 8 20]]
[[ 1 13]
[ 5 17]
[ 9 21]]
[[ 2 14]
[ 6 18]
[10 22]]
[[ 3 15]
[ 7 19]
[11 23]]]