简单瞅瞅-numpy库transpose函数

28次阅读

共计 688 个字符,预计需要花费 2 分钟才能阅读完成。

写在前面

接我的上一篇博客,嘿嘿, 应该能看懂吧,如果 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]]])

技巧

可能比较难想,技巧的话

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

正文完
 0