Numpy中转置transpose、T和swapaxes的实例讲解


Posted in Python onApril 17, 2018

利用Python进行数据分析时,Numpy是最常用的库,经常用来对数组、矩阵等进行转置等,有时候用来做数据的存储。

在numpy中,转置transpose和轴对换是很基本的操作,下面分别详细讲述一下,以免自己忘记。

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

如上图所示,将0-15放在一个2 2 4 的矩阵当中,得到结果如上。

现在要进行装置transpose操作,比如

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

结果是如何得到的呢?

每一个元素都分析一下,0位置在[0,0,0],转置为[1,0,2],相当于把原来位置在[0,1,2]的转置到[1,0,2],对0来说,位置转置后为[0,0,0],同理,对1 [0,0,1]来说,转置后为[0,0,1],同理我们写出所有如下:

其中第一列是值,第二列是转置前位置,第三列是转置后,看到转置后位置,再看如上的结果,是不是就豁然开朗了?

0 [0,0,0] [0,0,0]
1 [0,0,1] [0,0,1]
2 [0,0,2] [0,0,2]
3 [0,0,3] [0,0,3]
4 [0,1,0] [1,0,0]
5 [0,1,1] [1,0,1]
6 [0,1,2] [1,0,2]
7 [0,1,3] [1,0,3]
8 [1,0,0] [0,1,0]
9 [1,0,1] [0,1,1]
10 [1,0,2] [0,1,2]
11 [1,0,3] [0,1,3]
12 [1,1,0] [1,1,0]
13 [1,1,1] [1,1,1]
14 [1,1,2] [1,1,2]
15 [1,1,3] [1,1,3]

再看另一个结果:

In [20]: arr.T
Out[20]:
array([[[ 0, 8],
    [ 4, 12]],
    [[ 1, 9],
    [ 5, 13]],
    [[ 2, 10],
    [ 6, 14]],
    [[ 3, 11],
    [ 7, 15]]])
In [21]: arr.transpose(2,1,0)
Out[21]:
array([[[ 0, 8],
    [ 4, 12]],
    [[ 1, 9],
    [ 5, 13]],
    [[ 2, 10],
    [ 6, 14]],
    [[ 3, 11],
    [ 7, 15]]])

再对比转置前后的图看一下:

0 [0,0,0] [0,0,0] 
1 [0,0,1] [1,0,0] 
2 [0,0,2] [2,0,0] 
3 [0,0,3] [3,0,0] 
4 [0,1,0] [0,1,0] 
5 [0,1,1] [1,1,0] 
6 [0,1,2] [2,1,0] 
7 [0,1,3] [3,1,0] 
8 [1,0,0] [0,0,1] 
9 [1,0,1] [1,0,1] 
10 [1,0,2] [2,0,1] 
11 [1,0,3] [3,0,1] 
12 [1,1,0] [0,1,1] 
13 [1,1,1] [1,1,1] 
14 [1,1,2] [2,1,1] 
15 [1,1,3] [3,1,1]

瞬间就明白转置了吧!其实只要动手写写,都很容易明白的。另外T其实就是把顺序全部颠倒过来,如下:

In [22]: arr3=np.arange(16).reshape(2,2,2,2)
In [23]: arr3
Out[23]:
array([[[[ 0, 1],
     [ 2, 3]],
    [[ 4, 5],
     [ 6, 7]]],
    [[[ 8, 9],
     [10, 11]],
    [[12, 13],
     [14, 15]]]])
In [24]: arr3.T
Out[24]:
array([[[[ 0, 8],
     [ 4, 12]],
    [[ 2, 10],
     [ 6, 14]]],
    [[[ 1, 9],
     [ 5, 13]],
    [[ 3, 11],
     [ 7, 15]]]])
In [25]: arr3.transpose(3,2,1,0)
Out[25]:
array([[[[ 0, 8],
     [ 4, 12]],
    [[ 2, 10],
     [ 6, 14]]],
    [[[ 1, 9],
     [ 5, 13]],
    [[ 3, 11],
     [ 7, 15]]]])

转置就是这样子,具体上面aar3转置前后的位置,就不写了。

下面说说swapaxes,轴对称。

话不多,上结果

In [27]: arr.swapaxes(1,2) 
Out[27]: 
array([[[ 0, 4], 
    [ 1, 5], 
    [ 2, 6], 
    [ 3, 7]], 
 
    [[ 8, 12], 
    [ 9, 13], 
    [10, 14], 
    [11, 15]]]) 
 
In [28]: arr.transpose(0,2,1) 
Out[28]: 
array([[[ 0, 4], 
    [ 1, 5], 
    [ 2, 6], 
    [ 3, 7]], 
 
    [[ 8, 12], 
    [ 9, 13], 
    [10, 14], 
    [11, 15]]])

发现了吧,其实swapaxes其实就是把矩阵中某两个轴对换一下,不信再看一个:

In [29]: arr3
Out[29]:
array([[[[ 0, 1],
     [ 2, 3]],
    [[ 4, 5],
     [ 6, 7]]],
    [[[ 8, 9],
     [10, 11]],
    [[12, 13],
     [14, 15]]]])
In [30]: arr3.swapaxes(1,3)
Out[30]:
array([[[[ 0, 4],
     [ 2, 6]],
    [[ 1, 5],
     [ 3, 7]]],
    [[[ 8, 12],
     [10, 14]],
    [[ 9, 13],
     [11, 15]]]])
In [31]: arr3.transpose(0,3,2,1)
Out[31]:
array([[[[ 0, 4],
     [ 2, 6]],
    [[ 1, 5],
     [ 3, 7]]],
    [[[ 8, 12],
     [10, 14]],
    [[ 9, 13],
     [11, 15]]]])

哈哈,只要动手做做,会发现其实没有那么困难,不能只看。

纸上得来终觉浅,绝知此事要躬行!共勉!

以上这篇Numpy中转置transpose、T和swapaxes的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python获取apk文件URL地址实例
Nov 01 Python
Python操作MySQL数据库9个实用实例
Dec 11 Python
详解用python实现简单的遗传算法
Jan 02 Python
Python基于最小二乘法实现曲线拟合示例
Jun 14 Python
Python用于学习重要算法的模块pygorithm实例浅析
Aug 16 Python
程序员写Python时的5个坏习惯,你有几条?
Nov 26 Python
django 中QuerySet特性功能详解
Jul 25 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
Jun 28 Python
Python读取yaml文件的详细教程
Jul 21 Python
如何在Win10系统使用Python3连接Hive
Oct 15 Python
解决Pytorch修改预训练模型时遇到key不匹配的情况
Jun 05 Python
Python实战之大鱼吃小鱼游戏的实现
Apr 01 Python
解读python logging模块的使用方法
Apr 17 #Python
numpy中的高维数组转置实例
Apr 17 #Python
numpy.transpose对三维数组的转置方法
Apr 17 #Python
python获取酷狗音乐top500的下载地址 MP3格式
Apr 17 #Python
Python中的上下文管理器和with语句的使用
Apr 17 #Python
Python实现读取字符串按列分配后按行输出示例
Apr 17 #Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
Apr 17 #Python
You might like
PHP 压缩文件夹的类代码
2009/11/05 PHP
php gzip压缩输出的实现方法
2013/04/27 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
PHP 二维array转换json的实例讲解
2018/08/21 PHP
关于Yii中模型场景的一些简单介绍
2019/09/22 PHP
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
jQuery中:has选择器用法实例
2014/12/30 Javascript
javascript计时器详解
2015/02/28 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
2016/05/16 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
微信小程序动态显示项目倒计时效果
2017/06/13 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
Vue父子组件双向绑定传值的实现方法
2018/07/31 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
vue下axios拦截器token刷新机制的实例代码
2020/01/17 Javascript
js简单实现自动生成表格功能示例
2020/06/02 Javascript
js实现简易点击切换显示或隐藏
2020/11/29 Javascript
Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
2008/09/06 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
2016/06/18 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
Python IDE Pycharm中的快捷键列表用法
2019/08/08 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
python 实现在无序数组中找到中位数方法
2020/03/03 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
Django后端按照日期查询的方法教程
2021/02/28 Python
波兰家居和花园家具专家:4Home
2019/05/26 全球购物
巴西独家产品和现场演示购物网站:Shoptime
2019/07/11 全球购物
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
淘宝网店营销策划书
2014/01/11 职场文书
三八红旗手先进事迹材料
2014/05/13 职场文书
干部考察材料范文
2014/12/24 职场文书
2019年行政人事个人工作总结范本!
2019/07/19 职场文书
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技