[英]Transposing a 3-d numpy array
假设我有一个形状为(5,24,1)
的numpy
数组A
我想沿axis = 0
进行五个单独的转置,这样转置后的最终形状为(5,1,24)
。
如何使用一些numpy
函数执行此操作?
可以提出三种方法-
A.swapaxes(1,2)
A.transpose(0,2,1)
np.rollaxis(A,2,1)
对于swapaxes
和transpose
,请遵循其文档。
使用np.rollaxis
,我们将滚动轴以将第三轴移至第二位置,从而将第二轴推回第三轴位置。 链接文档中的更多信息。
利用最后一个轴为单例的事实-
A[:,None,:,0]
您可以使用np.moveaxis
(Divakars最佳答案中缺少的一个选项),您可以在其中定义应移动的轴:
np.moveaxis(A, (0, 1, 2), (0, 2, 1))
这会将轴0
移动到0
(不变,也可以省略), 1
到2
和2
到1
。 因此,这基本上只是交换轴1和2。
>>> A = np.ones((5,24,1))
>>> res = np.moveaxis(A, (1, 2), (2, 1)) # this time without the zeros
>>> res.shape
(5, 1, 24)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.