对numpy中的transpose和swapaxes函数详解


Posted in Python onAugust 02, 2018

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高维数组的切片也是这样选取维度的。

以上这篇对numpy中的transpose和swapaxes函数详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python编程中字符串和列表的基本知识讲解
Oct 14 Python
Python数据结构之单链表详解
Sep 12 Python
python-opencv 将连续图片写成视频格式的方法
Jan 08 Python
Python面向对象程序设计示例小结
Jan 30 Python
Python神奇的内置函数locals的实例讲解
Feb 22 Python
python常用库之NumPy和sklearn入门
Jul 11 Python
python实现日志按天分割
Jul 22 Python
Python udp网络程序实现发送、接收数据功能示例
Dec 09 Python
基于Tensorflow:CPU性能分析
Feb 10 Python
Python中使用socks5设置全局代理的方法示例
Apr 15 Python
基于keras中的回调函数用法说明
Jun 17 Python
Django通过设置CORS解决跨域问题
Nov 26 Python
Numpy 改变数组维度的几种方法小结
Aug 02 #Python
python 字典中取值的两种方法小结
Aug 02 #Python
python 剪切移动文件的实现代码
Aug 02 #Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
Aug 02 #Python
Python实现两个list求交集,并集,差集的方法示例
Aug 02 #Python
python爬虫框架scrapy实现模拟登录操作示例
Aug 02 #Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 #Python
You might like
php的sprintf函数的用法 控制浮点数格式
2014/02/14 PHP
PHP SPL标准库中的常用函数介绍
2015/05/11 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
2019/10/03 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
2019/10/21 PHP
document 和 document.all 分别什么时候用
2006/06/22 Javascript
Prototype使用指南之selector.js
2007/01/10 Javascript
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
js通过地址栏给action传值(中文乱码全是问号)
2013/05/02 Javascript
javascript简单性能问题及学习笔记
2014/02/04 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
js简单工厂模式用法实例
2015/06/30 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
2017/01/21 Javascript
Vue中正确使用jQuery的方法
2017/10/30 jQuery
JavaScript switch语句使用方法简介
2019/12/30 Javascript
Python实现的下载8000首儿歌的代码分享
2014/11/21 Python
python搭建虚拟环境的步骤详解
2016/09/27 Python
详解Python nose单元测试框架的安装与使用
2017/12/20 Python
python主线程捕获子线程的方法
2018/06/17 Python
python学生信息管理系统(初级版)
2018/10/17 Python
基于python2.7实现图形密码生成器的实例代码
2019/11/05 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
简单了解Django项目应用创建过程
2020/07/06 Python
英国领先的大码时装品牌之一:Elvi
2018/08/26 全球购物
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
法人代表任命书范本
2014/06/05 职场文书
党员自我剖析材料(群众路线)
2014/10/06 职场文书
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
交通处罚决定书
2015/06/24 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
创业计划书之酒店
2019/08/30 职场文书