将3D Numpy数组转置

4
尝试对numpy数组中的每个数组进行转置。
以下是我想要的一个例子:
A:
 [[[ 1  2  3]
   [ 4  5  6]]

  [[ 7  8  9]
   [10 11 12]]]

转置:

 [[[ 1  4]
   [ 2  5]
   [ 3  6]]

  [[ 7  10]
   [ 8  11]
   [ 9  12]]]

尝试使用np.apply_along_axis函数进行操作,但是没有得到正确的结果。我正在尝试将其应用于一个非常大的数组,任何帮助都将不胜感激!

A=np.arange(1,13).reshape(2,2,3)
A=np.apply_along_axis(np.transpose, 0, A)
3个回答

10

您需要交换第二和第三轴,可以使用np.swapaxes:

A.swapaxes(1,2)

#array([[[ 1,  4],
#        [ 2,  5],
#        [ 3,  6]],

#       [[ 7, 10],
#        [ 8, 11],
#        [ 9, 12]]])

转置:

A.transpose(0,2,1)

#array([[[ 1,  4],
#        [ 2,  5],
#        [ 3,  6]],

#       [[ 7, 10],
#        [ 8, 11],
#        [ 9, 12]]])

2

为了完整起见,还有一个moveaxis,它替换了已弃用的rollaxis

>>> np.rollaxis(A, 2, 1)
array([[[ 1,  4],
        [ 2,  5],
        [ 3,  6]],

       [[ 7, 10],
        [ 8, 11],
        [ 9, 12]]])
>>> np.moveaxis(A, 2, 1)
array([[[ 1,  4],
        [ 2,  5],
        [ 3,  6]],

       [[ 7, 10],
        [ 8, 11],
        [ 9, 12]]])

0
您所寻求的转变:
A = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
solution = np.array([A[0].T,A[1].T]) 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接