转置3D Numpy阵列

时间:2018-04-02 02:24:18

标签: python-3.x numpy

尝试在我的numpy数组中转置每个numpy数组。

这是我想要的一个例子:

A:

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

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

转置:

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

尝试使用np.apply_along_axis函数执行此操作但未获得正确的结果。我正在尝试将此应用于非常大的数组,并且将非常感谢任何帮助!

{{1}}

3 个答案:

答案 0 :(得分:3)

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

A.swapaxes(1,2)

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

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

transpose

A.transpose(0,2,1)

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

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

答案 1 :(得分:1)

为了完整起见,还有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]]])

答案 2 :(得分:0)

您寻求的转型:

[[NSString alloc] initWithData:data encoding:NSUTF16LittleEndianStringEncoding];