对numpy中的transpose和swapaxes函数详解
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函数详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
Numpy中转置transpose、T和swapaxes的实例讲解
利用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
-
对numpy下的轴交换transpose和swapaxes的示例解读
如下所示: 解读: transpose( ) 方法的参数是一个 由 轴编号(轴编号自0 开始) 序列构成的 元组. 开始时,数组的轴编号序列是默认从 0开始的 :0,1,2,, 坐标的顺序也是这个轴编号的顺序,(0,1,2) 当使用 transpose 时候,轴编号的顺序变成了 (1,0,2) 说明 0号轴和1号轴的顺序变了, 那么,坐标的顺序也应该变了, 例如 元素 8: 开始时:根据轴顺序 0,1,2.他的坐标是 (1,0,0) 现在,根据周顺序 1,0,2:他的坐标是(0,1,0). sw
-
详解Numpy数组转置的三种方法T、transpose、swapaxes
Numpy是高性能科学计算和数据分析的基础包,里面包含了许多对数组进行快速运算的标准数学函数,掌握这些方法,能摆脱数据处理时的循环. 1.首先数组转置(T) 创建二维数组data如下: 进行矩阵运算时,经常要用数组转置,比如计算矩阵内积X^T X.这时就需要利用数组转置,如下: 2.轴对换之transpose 对于高维数组,可以使用轴对换来对多个维度进行变换. 这里创建了一个三维数组,各维度大小分别为2,3,4. transpose进行的操作其实是将各个维度重置,原来(2,3,4)对应的是(0,
-
对numpy中的transpose和swapaxes函数详解
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
-
在Python3 numpy中mean和average的区别详解
mean和average都是计算均值的函数,在不指定权重的时候average和mean是一样的.指定权重后,average可以计算一维的加权平均值. 具体如下: import numpy as np a = np.array([np.random.randint(0, 20, 5), np.random.randint(0, 20, 5)]) print('原始数据\n', a) print('mean函数'.center(20, '*')) print('对所有数据计算\n', a.mean(
-
关于numpy中eye和identity的区别详解
两个函数的原型为: np.identity(n, dtype=None) np.eye(N, M=None, k=0, dtype=<type 'float'>): np.identity只能创建方形矩阵 np.eye可以创建矩形矩阵,且k值可以调节,为1的对角线的位置偏离度,0居中,1向上偏离1,2偏离2,以此类推,-1向下偏离.值绝对值过大就偏离出去了,整个矩阵就全是0了. 以上这篇关于numpy中eye和identity的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希
-
基于Java中进制的转换函数详解
十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinaryString(int i) 十六进制转成十进制 Integer.valueOf("FFFF",16).toString() 八进制转成十进制 Integer.valueOf("876",8).toString() 二进制转十进制 Integer.valueOf(&qu
-
对numpy中array和asarray的区别详解
array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会. 举例说明: import numpy as np #example 1: data1=[[1,1,1],[1,1,1],[1,1,1]] arr2=np.array(data1) arr3=np.asarray(data1) data1[1][1]=2 print 'data1:\n',data1 print 'ar
-
对numpy中的where方法嵌套使用详解
如同for循环一样,numpy中的where方法可以实现嵌套功能.这是简化嵌套式矩阵逻辑的一个很好的方法. 假设有一个矩阵,需要把小于0的元素改成-1,大于0的元素改成1,而等于0的时候不做修改. 那么,对应的代码示范如下: #!/usr/bin/python import numpy as np data = np.random.randn(4,5) data1 =np.where(data > 0,1, np.where(data <0,-1,0)) print("dataval
-
对numpy中的数组条件筛选功能详解
在程序设计中,时常会遇到数据的唯一化.相同.相异信息的提取等工作,在格式化的向量存储矩阵中南,numpy能够提供比较不错的快速处理功能. 1,唯一化的实现: In [63]: data = np.array(['int','float','int','boolean','double','boolean']) In [64]: data Out[64]: array(['int', 'float', 'int', 'boolean', 'double', 'boolean'], dtype='|
-
numpy中的converters和usecols用法详解
目录 方法一:使用usecols 方法二:使用numpy 方法三:使用切片区间 总结: 用Python打开Excel数据,读取时需要将”学号“和“ID"转换成字符,以便后续操作 df = pd.read_excel(path, converters={'学号': str, 'ID': str}) 以下是我的经历来体会: 我在从Excel读入python的数据时,发现读出的是空值: import pandas as pd df=pd.read_excel("D:/Python/05Dat
-
浅谈Python中的zip()与*zip()函数详解
前言 1.实验环境: Python 3.6: 2.示例代码地址:下载示例: 3.本文中元素是指列表.元组.字典等集合类数据类型中的下一级项目(可能是单个元素或嵌套列表). zip(*iterables)函数详解 zip()函数的定义 从参数中的多个迭代器取元素组合成一个新的迭代器: 返回: 返回一个zip对象,其内部元素为元组:可以转化为列表或元组: 传入参数:元组.列表.字典等迭代器. zip()函数的用法 当zip()函数中只有一个参数时 zip(iterable)从iterable中依次取
-
numpy中的ndarray方法和属性详解
NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推.在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量.比如说,二维数组相当于是一个一维数组,而这个一维数组中每个元素又是一个一维数组.所以这个一维数组就是NumPy中的轴(axes),而轴的数量--秩,就是数组的维数. Numpy库中的矩阵模块为ndarray对象,有很多属性:T,data, dtype,flags,flat,imag,real,size, itemsize,nbyte
随机推荐
- 详解ASP.NET七大身份验证方式以及解决方案
- Docker 教程之获取镜像基础知识详解
- 详解Shell cut用法
- Python完全新手教程
- 在数据库‘master’中拒绝CREATE DATABASE权限问题的解决方法
- AngularJS 实现点击按钮获取验证码功能实例代码
- 原生JS查找元素的方法(推荐)
- Android 第三方应用接入微信平台研究情况分享(二)
- mysql 字符串函数收集比较全
- js简单实现Select互换数据的方法
- web服务器程序运行出现乱码问题的解决方法
- 收集整理的ASP的常用内置函数
- Javascript MD4
- shell查找符号链接及其指向目标的方法介绍
- chrome下jq width()方法取值为0的解决方法
- React学习笔记之列表渲染示例详解
- 在js中使用"with"语句中跨frame的变量引用问题
- 彻底解决 webpack 打包文件体积过大问题
- 分析进入Win2000后留下的足迹
- 深入解读C语言中的符号常量EOF