Numpy之数组转置和轴对换
2018-11-22 本文已影响29人
半亩房顶
最近在学习Numpy,看到数组转置和轴对换这里,有些不太理解,分享一些自己思考的思路
先上代码,看下现象
import numpy as np
tarr = np.arange(24).reshape((2,3,4))
tarr
结果如图:
tarr
transpose(0,2,1)
transpose(0,2,1)
transpose(1,0,2)
transpose(1,0,2)
transpose(2,1,0)
transpose(2,1,0)
transpose(2,0,1)
transpose(2,0,1)
思路分析
如上现象,只是交换两个轴的转置还是简单的,毕竟矩阵的转置大家都学习过,这是二维层面的,但如果是三个轴打乱交换,此时较为难以想象,不妨就看成两次两个轴的交换
首先,我们需要明白下,上述矩阵中,三个轴分别在哪里
这是原始数据
图中红圈圈出的就是0轴的两个元素
0轴
图中紫圈圈出的就是1轴的三个元素
1轴
图中绿圈和黄圈圈出的就分别是2轴的第一个和第四个元素
2轴
- 0轴即是最外层列表中的两个并列元素
- 1轴即是同处于次外层列表中的三个并列元素
- 2轴即是在最内层列表中的四个并列元素
实践验证
明白了这个之后,我们看下例子,其实就好理解多了:
transpose(2,0,1) = transpose(2,1,0) -> transpose(2,0,1)
tarr:
image.png
transpose(2,1,0) :
transpose(2,1,0)
transpose(2,0,1):
transpose(2,0,1)
总结
从结果来看,思路应该是正确的,不过我是有点搞不明白4维数组好怎么搞了,但是我认为降维思考之后,应该是一致的。有不对之处,还望看官指正,谢谢。