Python numpy.transpose使用详解

前言

看Python代码时,碰见 numpy.transpose 用于高维数组时挺让人费解,通过一番画图分析和代码验证,发现 transpose 用法还是很简单的。

注:评论中说的三维坐标图中的 0 1 2 3 标反了,已经修正,感谢大家提醒(2019.02)。

正文

Numpy 文档 numpy.transpose中做了些解释,transpose 作用是改变序列,下面是一些文档Examples:

代码1:

x = np.arange(4).reshape((2,2))

输出1:

#x 为:
array([[0, 1],
       [2, 3]])

代码2:

import numpy as np
x.transpose()

输出2:

array([[0, 2],
       [1, 3]])

对于二维 ndarray,transpose在不指定参数是默认是矩阵转置。如果指定参数,有如下相应结果:

代码3:

x.transpose((0,1))

输出3:

# x 没有变化
array([[0, 1],
       [2, 3]])

代码4:

x.transpose((1,0))

输出4:

# x 转置了
array([[0, 2],
       [1, 3]])

这个很好理解:
对于x,因为:

代码5:

x[0][0] == 0
x[0][1] == 1
x[1][0] == 2
x[1][1] == 3

我们不妨设第一个方括号“[]”为 0轴 ,第二个方括号为 1轴 ,则x可在 0-1坐标系 下表示如下:

代码6:

因为 x.transpose((0,1)) 表示按照原坐标轴改变序列,也就是保持不变
而 x.transpose((1,0)) 表示交换 ‘0轴’ 和 ‘1轴’,所以就得到如下图所示结果:

注意,任何时候你都要保持清醒,告诉自己第一个方括号“[]”为 0轴 ,第二个方括号为 1轴
此时,transpose转换关系就清晰了。

我们来看一个三维的:

代码7:

import numpy as np

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

# 将A变换为三维矩阵
A = A.reshape(2,2,4)
print(A)

输出7:

A = array([[[ 0,  1,  2,  3],
            [ 4,  5,  6,  7]],
            
           [[ 8,  9, 10, 11],
            [12, 13, 14, 15]]])

我们对上述的A表示成如下三维坐标的形式:

所以对于如下的变换都很好理解啦:

代码8:

A.transpose((0,1,2))  #保持A不变
A.transpose((1,0,2))  #将 0轴 和 1轴 交换

将 0轴 和 1轴 交换:

此时,输出

代码9:

A.transpose((1,0,2)) [0][1][2]	#根据上图这个结果应该是10

后面不同的参数以此类推。

到此这篇关于Python numpy.transpose使用详解的文章就介绍到这了,更多相关Python numpy.transpose内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2022-08-09

对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对三维数组的转置方法

如下所示: import numpy as np 三维数组 arr1 = np.arange(16).reshape((2, 2, 4)) #[[[ 0 1 2 3] # [ 4 5 6 7]] # [[ 8 9 10 11] # [12 13 14 15]]] arr2=arr1.transpose((1,0,2)) #[[[ 0 1 2 3] # [ 8 9 10 11]] # # [[ 4 5 6 7] # [12 13 14 15]]] 正序为(0,1,2),数组为 #[[[ 0 1 2

numpy.transpose()实现数组的转置例子

说到转置操作,顺便提及矩阵与数组的区别: 矩阵:数学里的概念,其元素只能是数值,这也是区别于数组的根本所在 数组:计算机中的概念,代表一种数据组织.存储方式,其元素可以是数字.也可以是字符 数组的转置操作,是借鉴了线性代数中矩阵的转置操作.将行与列对调,即第一行变成第一列-..或第一列变成第一行-..的操作即使转置操作. 1. 多维数组的转置 import numpy as np test = np.array([[12,4,7,0],[3,7,45,81]]) test # 以下为test输出

对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

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

python pandas库中DataFrame对行和列的操作实例讲解

用pandas中的DataFrame时选取行或列: import numpy as np import pandas as pd from pandas import Sereis, DataFrame ser = Series(np.arange(3.)) data = DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('wxyz')) data['w'] #选择表格中的'w'列,使用类字典属性,返回的是S

对vue中v-on绑定自定事件的实例讲解

关于官网vue中v-on绑定自定义事件的个人理解 对官网实例进行了一些修改,如下图: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>v-on绑定自定义事件</title> <script src="vue.js"></script> </head>

对python中基于tcp协议的通信(数据传输)实例讲解

阅读目录 tcp协议:流式协议(以数据流的形式通信传输).安全协议(收发信息都需收到确认信息才能完成收发,是一种双向通道的通信) tcp协议在OSI七层协议中属于传输层,它上承用户层的数据收发,下启网络层.数据链路层.物理层.可以说很多安全数据的传输通信都是基于tcp协议进行的. 为了让tcp通信更加方便需要引入一个socket模块(将网络层.数据链路层.物理层封装的模块),我们只要调用模块中的相关接口就能实现传输层下面的繁琐操作. 简单的tcp协议通信模板:(需要一个服务端和一个客户端) 服务

python中tkinter的应用:修改字体的实例讲解

参考链接:tkinter book font字体的参数有如下6个 family: 字体类别,如'Fixdsys' size: 作为一个整数,以点字体的高度.为了获得字体的n个像素高,使用-n. weight: "BOLD" 表示加粗, "NORMAL" 表示正常大小,默认是NORMAL slant:斜体(默认正常), "NORMAL"表示正常,"ITALIC"表示字体倾斜 underline:下划线,1表示添加下滑线,0表示没

对Python中list的倒序索引和切片实例讲解

Python中list的倒序索引和切片是非常常见和方便的操作,但由于是倒序,有时候也不太好理解或者容易搞混. >>> nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> print(nums[-1]) 9 >>> print(nums[-2:]) [8, 9] >>> print(nums[:-3]) [0, 1, 2, 3, 4, 5, 6] 例如,给定一个数组nums. 索引操作 nums[-1]

vue项目中跳转到外部链接的实例讲解

当我们在文件中,如果是vue页面中的内部跳转,可以用this.$router.push()实现,但是如果我们还用这种方法跳到外部链接,就会报错,我们一看链接的路径,原来是我们的外部链接前面加上了http://localhost:8080/#/这一串导致跳转出现问题,那么我们如何跳转到外部链接呢,我们只需用 window.location.href = 'url'来实现,具体代码如下: <span @click="See(item.qj_url)">360全景看房</s

对pandas将dataframe中某列按照条件赋值的实例讲解

在数据处理过程中,经常会出现对某列批量做某些操作,比如dataframe df要对列名为"values"做大于等于30设置为1,小于30设置为0操作,可以这样使用dataframe的apply函数来实现, 具体实现代码如下: def fun(x): if x >= 30: return 1 else: return 0 values= feature['values'].apply(lambda x: fun(x)) 具体的逻辑可以修改fun函数来实现,但是按照某些条件选择列不是

对angular2中的ngfor和ngif指令嵌套实例讲解

ng2 结构指令不能直接嵌套使用,可使用标签来包裹指令 示例如下 <ul> <ng-container *ngFor="let item of lists"> <div class="thumb p-date" *ngIf="item.picurl"> <a href="# " rel="external nofollow" ><img src=&quo