理解python中numpy.transpose的用法(座标系图解)

在看一些文献的源码时,经常能看到numpy.transpose的应用,主要就是实现转置。对于高维数组有时就会绕进去,查阅资料时看到一篇博客通过座标系分析和代码验证,让我对transpose的用法原理恍然大悟的感觉,个人感觉十分便于理解,但是我发现原作者文章中的座标有一点点问题(个人理解,若理解有误,欢迎指正),为了加深自己的印象,特地整理一下便于以后的学习。
参考博客:https://www.cnblogs.com/xiaoboge/p/9682364.html
首先我们先看一个代码:

>>> import numpy as np
>>> x=np.arange(4).reshape((2,2))
>>> x
array([[0, 1],
       [2, 3]])

对于二维的数字,transpose在不指定参数的情况下是默认矩阵的转置。

>>> x.transpose()
array([[0, 2],
       [1, 3]])

如果指定参数(0,1),如下所示,x并没有改变

>>> x.transpose((0,1))
array([[0, 1],
       [2, 3]])

如果指定参数(1,0),如下所示,x转置了

>>> x.transpose((1,0))
array([[0, 2],
       [1, 3]])

这是为什么呢?我们通过建立座标轴很好很直观的看出这是为什么。我们可以设第一个方括号“[ ]”为0轴第二个方括号“[ ]”为1轴,则x可在0-1座标系下表示为:(红色的数字即为数组中的数据,黑色是座标系刻
在这里插入图片描述
因为x.transpose((0,1))表示按照原座标轴改变序列,所以结果并不改变。而x.transpose((1,0))表示交换‘0轴’和‘1轴’。
保持清晰理解的关键是记住第一个方括号“[ ]”为0轴第二个方括号“[ ]”为1轴 这样 transpose的关系就清晰了。
在这里插入图片描述下面看一个三维的,以便加深理解。

>>> A=np.arange(16)
>>> A=A.reshape(2,2,4)
>>> A
array([[[0,1,2,3],
        [4,5,6,7],
       [[8,9,10,11],
        [12,13,14,15]]])

对于上面代码中的A表示成如下三维座标的形式:
在这里插入图片描述
当我们使用A.transpose((0,1,2)),则A保持不变;A.transpose((1,0,2))就是将0轴与1轴交换。关键是记住第一个方括号“[ ]”为0轴第二个方括号“[ ]”为1轴第三个方括号“[ ]”为2轴

>>> A.transpose((1,0,2))
array([[[0,1,2,3],
        [8,9,10,11],
       [[4,5,6,7],
        [12,13,14,15]]])

将0轴与1轴交换在这里插入图片描述若是设置不同的参数,以此类推。若有问题或好的方法帮助理解和学习,欢迎交流。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章