ndarray矩阵,如何使用swapaxes方法交换轴数据?
发布于 作者:苏南大叔 来源:程序如此灵动~

本文依然讨论ndarray
矩阵转置的问题,最推荐的办法仍然是使用.T
属性,并不推荐上文的numpy.transpose()
,也并不推荐本文的ndarray.swapaxes()
方法(虽然本文的.swapaxes()
也可以实现转置需求)。

大家好,这里是苏南大叔的“程序如此灵动”博客,本文讨论ndarray
矩阵转置的另外一个可能的方案:ndarray.swapaxes()
。测试环境:win10
,python@3.11.0
,numpy@1.24.2
,pandas@1.5.3
。.swapaxes()
是定义在ndarray
类型上的,并不是直接定义在numpy
库上的。所以,使用的时候,注意区分。
swapaxes,swap(交换) + axes(轴)。
前文回顾
关于矩阵转置这个需求,大概率情况下,推荐读者使用.T
属性,参考文章:
也可以使用numpy.transpose()
方法,参考文章:
本文提出了第三个可能的解决方案:ndarray.swapaxes()
。这个方法需要至少两个参数,所以,理论上来说,至少两个轴才能使用这个方法。但是,一维数组并不会报错,因为可以传一样的轴序号。
翻转矩阵
有轴就可以翻转,有轴就可以转置。
一维数组转置
一维数组也有轴,是个零轴。所以,也可以翻转转置,虽然一如既往的没有啥意义。

二维数组转置
二维数组的话,就两个轴,即使不知道哪个是零轴,哪个是一轴,这也没有关系,都是一样的结果。

三维矩阵转置

在以前的文章里面,已经得出结论:ndarray
三维矩阵的转置,就是二轴和零轴的互换。而.swapaxes()
两个参数谁前谁后,完全没有关系。所以,这里有很多个相同的结果。
.swapaxes()
的不同之处
和numpy.transpose()
一样,这里的ndarray.swapaxes()
也是有特殊的用武之地的。测试代码:

虽然.swapaxes()
两个参数没有前后之分,但是.transpose(axes=())
的axes
是定义的顺序,是有前后之分的。所以,对于三维矩阵的.swapaxes()
来说,组合数是3。.transpose
来说,排列数是6。
结束语
更多苏南大叔写的python
经验文章,请点击:


