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

相关文章

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

numpy求解线性代数相关问题

《numpy求解线性代数相关问题》本文主要介绍了numpy求解线性代数相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 在numpy中有numpy.array类型和numpy.mat类型,前者是数组类型,后者是矩阵类型。数组

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou