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定时采集摄像头图像上传ftp服务器功能实现
Dec 23 Python
Python的函数的一些高阶特性
Apr 27 Python
python使用邻接矩阵构造图代码示例
Nov 10 Python
python的staticmethod与classmethod实现实例代码
Feb 11 Python
python实现判断一个字符串是否是合法IP地址的示例
Jun 04 Python
判断python对象是否可调用的三种方式及其区别详解
Jan 31 Python
Django 创建新App及其常用命令的实现方法
Aug 04 Python
Python logging设置和logger解析
Aug 28 Python
Python实现计算图像RGB均值方式
Jun 04 Python
Python3读取和写入excel表格数据的示例代码
Jun 09 Python
分布式全文检索引擎ElasticSearch原理及使用实例
Nov 14 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
Jan 05 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
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
分享php多功能图片处理类
2016/05/15 PHP
phpmyadmin下载、安装、配置教程
2017/05/16 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
Yii框架where查询用法实例分析
2019/10/22 PHP
Laravel框架之解决前端显示图片问题
2019/10/24 PHP
jquery遍历筛选数组的几种方法和遍历解析json对象
2013/12/13 Javascript
学习JavaScript设计模式之状态模式
2016/01/08 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
jQuery Mobile框架中的表单组件基础使用教程
2016/05/17 Javascript
SWFUpload多文件上传及文件个数限制的方法
2016/05/31 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
Vue异步组件使用详解
2017/04/08 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
深入理解Vue官方文档梳理之全局API
2017/11/22 Javascript
在ES5与ES6环境下处理函数默认参数的实现方法
2018/05/13 Javascript
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
node读写Excel操作实例分析
2019/11/06 Javascript
[57:22]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第五场
2018/04/10 DOTA
Python正则抓取网易新闻的方法示例
2017/04/21 Python
Python实现的tcp端口检测操作示例
2018/07/24 Python
Python中如何使用if语句处理列表实例代码
2019/02/24 Python
python Web flask 视图内容和模板实现代码
2019/08/23 Python
PyTorch的SoftMax交叉熵损失和梯度用法
2020/01/15 Python
django 取消csrf限制的实例
2020/03/13 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
德国狗狗用品在线商店:Schecker
2017/03/17 全球购物
《春雨》教学反思
2014/04/24 职场文书
党校毕业心得体会
2014/09/13 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
捐书仪式主持词
2015/07/04 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis