numpy基础之transpose

2024-02-09 14:52
文章标签 基础 numpy transpose

本文主要是介绍numpy基础之transpose,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 numpy基础之transpose

用法

ndarray.transpose(*axes)

描述

根据axes将ndarray数组进行转置。

入参

axes:可选,元组或列表。若指定,则元素个数必须为数组轴大小(ndarray.ndim),元素值的范围为[0,1,2,…,ndarray.ndim-1],返回数组的第i个轴对应输入的轴编号。未指定,默认为range(ndarray.ndim)[::-1],即将ndarray数组的轴进行翻转。

比如,ar的轴大小为5,那么,axes的元素个数为5,值为0/1/2/3/4,ar.transpose([2,3,4,0,1])返回数组的第0轴取ar数组的第2个轴的数据,第1轴取ar数组的第3个轴的数据。

出参

返回转置后的数组,不改变原数组。

1.1 一维数组调用transpose

描述

一维数组只有1个轴,通过transpose()转置后与本身相等。

示例

>>> import numpy as np
>>> ar1=np.arange(6)
>>> ar1
array([0, 1, 2, 3, 4, 5])
# ndim获取轴数量
>>> ar1.ndim
1
# 一维数组只有1个轴
# 通过transpose()转置后是本身
>>> ar1.transpose()
array([0, 1, 2, 3, 4, 5])
# axes只有1个元素,且为0
# 默认值取 range(ar1.ndim)[::-1]
>>> list(range(ar1.ndim)[::-1])
[0]
>>> ar1.transpose([0])
array([0, 1, 2, 3, 4, 5])

1.2 二维数组调用transpose

描述

二维数组通过transpose()转置后,将原数组的行列转换获得新数组。

示例

>>> import numpy as np
>>> ar2=np.arange(15).reshape((5,3))
>>> ar2
array([[ 0,  1,  2],[ 3,  4,  5],[ 6,  7,  8],[ 9, 10, 11],[12, 13, 14]])
>>> ar2.ndim
2
>>> ar2.shape
(5, 3)
# 二维数组只有2个轴,默认转置将行和列进行转置
>>> ar2.transpose()
array([[ 0,  3,  6,  9, 12],[ 1,  4,  7, 10, 13],[ 2,  5,  8, 11, 14]])
# 转置后形状也转置
>>> ar2.transpose().shape
(3, 5)
# axes 默认值取 range(ar1.ndim)[::-1]
>>> list(range(ar2.ndim)[::-1])
[1, 0]
# [1,0]:第0轴取ar2的第1轴数据
>>> ar2.transpose([1,0])
array([[ 0,  3,  6,  9, 12],[ 1,  4,  7, 10, 13],[ 2,  5,  8, 11, 14]])

1.3 三维数组调用transpose

描述

三维数组等高维数组通过transpose()转换,是对每个元素的索引位置进行转换。

n维数组的最内层的每个元素都可以通过n个索引来唯一标识。

比如三维数组ar3d的最内层的第0个元素可以通过ar3d[0,0,0]标识和获取。

ndarray的shape表示每个轴的元素个数,比如shape为(2,2,4)表示有3个轴,第0轴的元素个数为2,第1轴的元素个数为2,第2轴的元素个数为4,而每个元素都可以用索引标识,所以也表示每个轴的不同索引值的个数。shape为(2,2,4)对应的轴索引为(0,1,2)。

示例

>>> import numpy as np
>>> ar3=np.arange(16).reshape(2,2,4)
# ar3的shape(2,2,4)的轴索引为(0,1,2)
# ndarray的shape表示每个轴的元素个数
>>> ar3
array([[[ 0,  1,  2,  3],[ 4,  5,  6,  7]],[[ 8,  9, 10, 11],[12, 13, 14, 15]]])
# (0,1,2)转为(1,0,2)
# 将第0轴的索引0和第1轴的索引1互换
>>> ar3.transpose((1,0,2))
array([[[ 0,  1,  2,  3],[ 8,  9, 10, 11]],[[ 4,  5,  6,  7],[12, 13, 14, 15]]])
# (0,1,2)转为(2,0,1)
# 先将第0轴的索引0和第1轴的索引1互换,得(1,0,2)
# 再将(1,0,2)第0轴的索引1和第2轴的索引2互换,得(2,0,1)
>>> ar3.transpose((2,0,1))
array([[[ 0,  4],[ 8, 12]],[[ 1,  5],[ 9, 13]],[[ 2,  6],[10, 14]],[[ 3,  7],[11, 15]]])
>>> ar3.transpose((1,0,2)).shape
(2, 2, 4)
>>> ar3.transpose((2,0,1)).shape
(4, 2, 2)
>>> ar3.shape
(2, 2, 4)

三维数组转换,transpose的axes如果无法一步转换,可以通过多步转换来理解。

每个轴上的索引值的不同值的个数表示轴的大小,即shape。

比如transpose((2,0,1))后,第0轴的索引为转换前的2,其中不同索引值有0,1,2,3,索引第0轴的大小为4,依次得出第1轴为2,第2轴为2,最终shape为(4,2,2)。

在这里插入图片描述

这篇关于numpy基础之transpose的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/694514

相关文章

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

Python WebSockets 库从基础到实战使用举例

《PythonWebSockets库从基础到实战使用举例》WebSocket是一种全双工、持久化的网络通信协议,适用于需要低延迟的应用,如实时聊天、股票行情推送、在线协作、多人游戏等,本文给大家介... 目录1. 引言2. 为什么使用 WebSocket?3. 安装 WebSockets 库4. 使用 We

从基础到高阶详解Python多态实战应用指南

《从基础到高阶详解Python多态实战应用指南》这篇文章主要从基础到高阶为大家详细介绍Python中多态的相关应用与技巧,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、多态的本质:python的“鸭子类型”哲学二、多态的三大实战场景场景1:数据处理管道——统一处理不同数据格式

MySQL数据类型与表操作全指南( 从基础到高级实践)

《MySQL数据类型与表操作全指南(从基础到高级实践)》本文详解MySQL数据类型分类(数值、日期/时间、字符串)及表操作(创建、修改、维护),涵盖优化技巧如数据类型选择、备份、分区,强调规范设计与... 目录mysql数据类型详解数值类型日期时间类型字符串类型表操作全解析创建表修改表结构添加列修改列删除列

Python 函数详解:从基础语法到高级使用技巧

《Python函数详解:从基础语法到高级使用技巧》本文基于实例代码,全面讲解Python函数的定义、参数传递、变量作用域及类型标注等知识点,帮助初学者快速掌握函数的使用技巧,感兴趣的朋友跟随小编一起... 目录一、函数的基本概念与作用二、函数的定义与调用1. 无参函数2. 带参函数3. 带返回值的函数4.

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

python操作redis基础

《python操作redis基础》Redis(RemoteDictionaryServer)是一个开源的、基于内存的键值对(Key-Value)存储系统,它通常用作数据库、缓存和消息代理,这篇文章... 目录1. Redis 简介2. 前提条件3. 安装 python Redis 客户端库4. 连接到 Re