写在前面

接我的上一篇博客, 嘿嘿, 应该能看懂吧,如果numpy数组的维度懂了那就好理解transpose

代码说话

transpose就是转置的意思,函数返回按你指定的方式转置的矩阵

np.transpose(narray, axis=None)

举个例子感性理解一下:

>>> a = np.array([[[1], [2]], [[3], [4]], [[5], [6]]])
array([[[1],
        [2]],

       [[3],
        [4]],

       [[5],
        [6]]])
>>> a.transpose(0, 1, 2) # 此处用面向对象编程也可以
array([[[1],
        [2]],

       [[3],
        [4]],

       [[5],
        [6]]])
>>> a.transpose(0, 2, 1)
array([[[1, 2]],

       [[3, 4]],

       [[5, 6]]])

你可能已经明白了,他按照axis参数——你给定的顺序类进行转置
a.transpose(0, 2, 1)就是将第二维和第三维转置

   [[1]
    [2]]

转置为:

[[1, 2]]

你可能会为我为啥不是:

[[1], [2]]

这样的话,又凭空增加了一个维度,(最后一维应该是常数那一维)
所以,如果是a.transpose(1, 0, 2)
则是:

array([[[1],
        [3],
        [5]],

       [[2],
        [4],
        [6]]])

技巧

给两个图自己理解:
image.png
image.png
可能比较难想,技巧的话

  • 正视,你 要交换的那两维组成的平面(目光与该平面垂直),接着,将该平面转置,另一维度不变
  • array.shape也行,原来是(3, 2, 1),若执行a.transpose(1, 0, 2),则shape(2, 3, 1)
    可以参考:https://blog.csdn.net/Heartho...

王尼玛
373 声望13 粉丝

此号作废!