a = np.linspace(1,32,32).reshape(2,2,4,2)
array([[[[ 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.]]]])
①直接转置
a.T
array([[[[ 1., 17.],
[ 9., 25.]],
[[ 3., 19.],
[11., 27.]],
[[ 5., 21.],
[13., 29.]],
[[ 7., 23.],
[15., 31.]]],
[[[ 2., 18.],
[10., 26.]],
[[ 4., 20.],
[12., 28.]],
[[ 6., 22.],
[14., 30.]],
[[ 8., 24.],
[16., 32.]]]])
a.T.shape
(2, 4, 2, 2)
②转换为3维转置
a[0].T
array([[[ 1., 9.],
[ 3., 11.],
[ 5., 13.],
[ 7., 15.]],
[[ 2., 10.],
[ 4., 12.],
[ 6., 14.],
[ 8., 16.]]])
a[0].T.shape
(2, 4, 2)
扩展,不同维度转置
a = [ [[1,2],[1,3]],
[[2,3],[2,4],[2,5]] ]
a = np.array(a)
a.shape
(2,)
a.T
array([list([[1, 2], [1, 3]]), list([[2, 3], [2, 4], [2, 5]])],
dtype=object)
对比
a = [ [[1,2],[1,3],[1,4]],
[[2,3],[2,4],[2,5]] ]
a=np.array(a)
a.shape
(2, 3, 2)
array([[[1, 2],
[1, 2],
[1, 2]],
[[2, 3],
[3, 4],
[4, 5]]])