numpy.transpose()的用法

官方文档:https://docs.scipy.org/doc/numpy/reference/generated/numpy.transpose.html

1 numpy.transpose

numpy.transpose(a, axes=None)
Parameters:

a:Input array,输入数组

axes:可选,整型list。默认情况下,反转维度,否则根据给定的值对轴进行排列。

Returns:数组。a的坐标轴被打乱了。只要有可能,就会返回一个视图。

栗子1:不加参数的情况下,transpose()的作用就是整个矩阵完全置换

import numpy as np

A = np.arange(24).reshape(2, 3, 4)
print(A.shape)
print(A)

# result

shape: (2, 3, 4)
A: [[[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]]

   [[12 13 14 15]
    [16 17 18 19]
    [20 21 22 23]]]

------------------------------------------

T = A.transpose()
print(T.shape)
print(T)

# result

shape: (4, 3, 2)
T: [[[ 0 12]
     [ 4 16]
     [ 8 20]]

   [[ 1 13]
    [ 5 17]
    [ 9 21]]

   [[ 2 14]
    [ 6 18]
    [10 22]]

   [[ 3 15]
    [ 7 19]
    [11 23]]]

------------------------------------------
print(A[1, 2, 3])
print(T[3, 2, 1])

#result

23
23

栗子2:加参数时,必须根据矩阵的维度来设置参数

import numpy as np
 
 
 
#对于该矩阵可以认为有三个维度,即0,1,2
A = np.arange(24).reshape((2,3,4))
print(A.shape)
print(A)
#如果不改变原矩阵,那么正常的参数顺序是:(0,1,2)
T1 = A.transpose(0,1,2)
print(T1.shape)
print(T1)
print('_____________________')
#如果想要置换第1和第2个维度,则参数顺序为:(1, 0 ,2)
T2 = A.transpose(1,0,2)
print(T2.shape)
print(T2)
print('_____________________')
#如果要置换第1和第3个维度,则参数的顺序为:(2,1,0)
T = A.transpose(2,1,0)
print(T3.shape)
print(T3)


# result

A.shape: (2, 3, 4)
A: [[[ 0  1  2  3]
    [ 4  5  6  7]
    [ 8  9 10 11]]

   [[12 13 14 15]
    [16 17 18 19]
    [20 21 22 23]]]
_____________________

T1.shape (2, 3, 4)
T1: [[[ 0  1  2  3]
      [ 4  5  6  7]
      [ 8  9 10 11]]

     [[12 13 14 15]
      [16 17 18 19]
      [20 21 22 23]]]
_____________________

T2.shape: (3, 2, 4)
T2: [[[ 0  1  2  3]
      [12 13 14 15]]

     [[ 4  5  6  7]
      [16 17 18 19]]

     [[ 8  9 10 11]
      [20 21 22 23]]]
_____________________

T3.shape: (4, 3, 2)
T3: [[[ 0 12]
      [ 4 16]
      [ 8 20]]

     [[ 1 13]
      [ 5 17]
      [ 9 21]]

     [[ 2 14]
      [ 6 18]
      [10 22]]

     [[ 3 15]
      [ 7 19]
      [11 23]]]

通俗理解:shape=(C,H,W),也就是有C个H*W的二维矩阵。不管怎么转置,第一位为C,第二位为H,第三位W,这是恒定不变的,变得只是其对应的数值。比如shape=(3,4,5),有3个4*5的二维矩阵组成的三维矩阵,此时通过transpose变换,shape=(4,3,5),有4个3*5的矩阵组成的三维矩阵。这样想就很容易看出来是怎样变换的了。

参考:https://blog.csdn.net/oMoDao1/article/details/81776961

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值