对numpy中的transpose和swapaxes函数详解

作者:ML_BOY 时间:2023-03-14 06:10:44 

transpose()

这个函数如果括号内不带参数,就相当于转置,和.T效果一样,而今天主要来讲解其带参数。

我们看如下一个numpy的数组:


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

那么有:


arr.transpose(2,1,0)
array([[[ 0, 8],
 [ 4, 12]],

[[ 1, 9],
 [ 5, 13]],

[[ 2, 10],
 [ 6, 14]],

[[ 3, 11],
 [ 7, 15]]])

为什么会是这样的结果呢,这是因为arr这个数组有三个维度,三个维度的编号对应为(0,1,2),比如这样,我们需要拿到7这个数字,怎么办,肯定需要些三个维度的值,7的第一个维度为0,第二个维度为1,第三个3,所以arr[0,1,3]则拿到了7


arr[0,1,3] #结果就是7

这下应该懂了些吧,好,再回到transpose()这个函数,它里面就是维度的排序,比如我们后面写的transpose(2,1,0),就是把之前第三个维度转为第一个维度,之前的第二个维度不变,之前的第一个维度变为第三个维度,好那么我们继续拿7这个值来说,之前的索引为[0,1,3],按照我们的转换方法,把之前的第三维度变为第一维度,之前的第一维度变为第三维度,那么现在7的索引就是(3,1,0)

同理所有的数组内的数字都是这样变得,这就是transpose()内参数的变化。

理解了上面,再来理解swapaxes()就很简单了,swapaxes接受一对轴编号,其实这里我们叫一对维度编号更好吧,比如:


arr.swapaxes(2,1) #就是将第三个维度和第二个维度交换
array([[[ 0, 4],
 [ 1, 5],
 [ 2, 6],
 [ 3, 7]],

[[ 8, 12],
 [ 9, 13],
 [10, 14],
 [11, 15]]])

还是那我们的数字7来说,之前的索引是(0,1,3),那么交换之后,就应该是(0,3,1)

多说一句,其实numpy高维数组的切片也是这样选取维度的。

来源:https://blog.csdn.net/qq1483661204/article/details/70543952

标签:numpy,transpose,swapaxes
0
投稿

猜你喜欢

  • SQL Server存储过程中编写事务处理的方法小结

    2024-01-15 15:24:24
  • SQL常用日期查询语句及显示格式设置

    2024-01-25 06:57:37
  • Python-Selenium自动化爬虫

    2021-04-04 10:55:39
  • JavaScript中创建原子的方法总结

    2023-06-29 12:22:14
  • python定时复制远程文件夹中所有文件

    2023-08-17 17:55:32
  • 实战手记:让百万级数据瞬间导入SQL Server

    2010-06-07 14:13:00
  • ASP操作XML的方法

    2008-03-06 21:43:00
  • distinct 多列问题结合group by的解决方法

    2024-01-21 11:18:23
  • 详解Python函数print用法

    2023-06-10 03:47:34
  • Python中如何获取类属性的列表

    2023-02-10 21:57:41
  • 微信小程序wx.request拦截 器使用详解

    2023-07-22 09:11:55
  • MYSQL大表加索引的实现

    2024-01-16 03:12:36
  • SQLServer中用T—SQL命令查询一个数据库中有哪些表的sql语句

    2012-07-11 15:28:50
  • MYSQL与SQLserver之间存储过程的转换方式

    2024-01-26 20:52:53
  • python使用Flask框架获取用户IP地址的方法

    2023-08-09 03:15:23
  • SQL Server优化50法汇总

    2024-01-24 11:11:37
  • Django表单提交后实现获取相同name的不同value值

    2023-08-11 01:59:31
  • 一篇文章带你学习Python3的高阶函数

    2021-04-24 00:58:51
  • pyqt4教程之messagebox使用示例分享

    2023-11-06 08:09:03
  • PHP删除数组中指定值的元素常用方法实例分析【4种方法】

    2024-06-05 09:51:58
  • asp之家 网络编程 m.aspxhome.com