Python Numpy:如何仅转置最后几个维度

Sam*_*ge 3 python numpy

例如,如果我只想转置此数组的最后两个维度: a=np.random.randn(2,2,2,2,2),我会写类似:a.transpose((0,1,2,4,3))。如何省略主要尺寸?有哪些简洁有效的方法?谢谢!

编辑,我知道如何简单地交换数组的形状和步幅,但我认为它看起来很混乱:

strides=list(a.strides)
strides[-2], strides[-1]=strides[-1], strides[-2]
a.strides= strides

shape=list(a.shape)
shape[-2], shape[-1]=shape[-1], shape[-2]
a.shape= shape
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种巧妙的方法可以做到这一点。

小智 7

方法np.moveaxis就是你想要的:

a = np.moveaxis(a, -1, -2)
Run Code Online (Sandbox Code Playgroud)