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)。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/676422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R语言rmarkdown使用

1、安装 install.packages(rmarkdown) library(rmarkdown) install.packages(tinytex) tinytex::install_tinytex() 2、新建R Markdown 3、基本框架 红色框内为YAML:包括标题、作者和日期等 黄色框内为代码块:执行后面的代码,并可以设置展…

适用于 Windows 的 6 款 iPhone 数据恢复软件

数据恢复 已经取得了长足的进步。从仅提供恢复数据的可能性到保证数据恢复,有许多适用于 Windows的第三方 iPhone 数据恢复软件。 大多数软件都是高级工具,但是提供了出色的数据恢复解决方案。从iPhone恢复数据非常简单。 只需将 iPhone 连接到您的计算…

11 串口发送应用之使用状态机实现多字节数据发送

1. 使用串口发送5个字节数据到电脑 uart协议规定,发送的数据位只能是6,7,8位,如果数据位不符合,接收者接收不到数据。所以我们需要将40位数据data分为5个字节数据分别发送,那么接收者就能通过uart协议接收…

qt/c++实现拓扑排序可视化

💂 个人主页:pp不会算法^ v ^ 🤟 版权: 本文由【pp不会算法v】原创、在CSDN首发、需要转载请联系博主 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 实现功能 1、选择文件导入初始数据 2、逐步演示 3、排序完成输出…

多线程基础详解(看到就是赚到)

🎥 个人主页:Dikz12📕格言:那些在暗处执拗生长的花,终有一日会馥郁传香欢迎大家👍点赞✍评论⭐收藏 目录 创建线程 1.创建类继承Thread,重写run() 2.实现Runnable,重写run() 3.继承Thread,使用匿名内部类 …

问题:A注册会计师必须在期中实施实质性程序的情形是()。 #学习方法#其他

问题:A注册会计师必须在期中实施实质性程序的情形是()。 A.甲公司整体控制环境不佳 B.将期中实质性程序所获证据与期末数据进行比较 C.评估的认定层次重大错报风险很高 D.没有把握通过在期中…

Linux 36.2@Jetson Orin Nano基础环境构建

Linux 36.2Jetson Orin Nano基础环境构建 1. 源由2. 步骤2.1 安装NVIDIA Jetson Linux 36.2系统2.2 必备软件安装2.3 基本远程环境2.3.1 远程ssh登录2.3.2 samba局域网2.3.3 VNC远程登录 2.4 开发环境安装 3. 总结 1. 源由 现在流行什么,也跟风来么一个一篇。当然&…

C++自定义函数详解

个人主页:PingdiGuo_guo 收录专栏:C干货专栏 铁汁们新年好呀,今天我们来了解自定义函数。 文章目录 1.数学中的函数 2.什么是自定义函数 3.自定义函数如何使用? 4.值传递和引用传递(形参和实参区分) …

Spring Boot项目Jar包加密:防止反编译的安全实践

文章目录 1. 引言2. 背景3. Jar包加密方案3.1 使用Java混淆工具3.2 使用Jar包加密工具3.2.1 示例:使用JCryptor对Jar包进行加密 4. 加密后的Jar包的运行5. 安全性与性能考虑5.1 安全性考虑5.2 性能考虑 6. 拓展功能与未来展望6.1 数字签名与验签6.2 使用加密算法库 …

代码随想录算法训练营第四十五天(动态规划篇)|01背包

01背包理论基础 学习资料:代码随想录 (programmercarl.com) 相关链接:题目页面 (kamacoder.com) 背包题目分类 01背包定义 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次…

企业飞书应用机器人,使用python自动发送文字内容到群消息

文章目录 创建企业应用与开通机器人飞书发送信息的工具函数 创建企业应用与开通机器人 需要先创建应用,然后进入应用后,点击添加应用能力创建机器人: 参考官方文档,获取两个参数:app_id与app_secret 官方说明文档&…

【DC渗透系列】DC-4靶场

主机发现 arp-scan -l┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:6b:ed:27, IPv4: 192.168.100.251 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.100.1 00:50:56:c0:00:08 …

电力负荷预测 | 基于AE-LSTM的电力负荷预测(Python)

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 电力负荷预测 | 基于AE-LSTM的电力负荷预测(Python) 基于AE-LSTM(自动编码器长短期记忆网络)的电力负荷预测是一种基于深度学习的方法,用于预测未来一段时间内的电力负荷需求。该方法结合了自动编码器和LSTM网…

FastDFS安装并整合Openresty

FastDFS安装 一、环境--centos7二、FastDFS--tracker安装2.1.下载2.2.FastDFS安装环境2.3.安装FastDFS依赖libevent库2.4.安装libfastcommon2.5.安装 libserverframe 网络框架2.6.tracker编译安装2.7.文件安装位置介绍2.8.错误处理2.9.配置FastDFS跟踪器(Tracker)2.10.启动2.11…

MVC框架学习

大一的时候写过一个mvc框架的跑酷游戏,但是那时候基础不扎实,没学明白也没听懂。现在深入的学习一下 以下内容参考:MVC 模式 | 菜鸟教程 (runoob.com) MVC 模式 MVC 模式代表 Model-View-Controller(模型-视图-控制器&#xff…

【DDD】学习笔记-数据分析模型

在 Eric Evans 提出领域驱动设计之前,对企业系统的分析设计多数采用数据模型驱动设计。如前所述,这种数据模型驱动设计就是站在数据的建模视角,逐步开展分析、设计与实现的建模过程。通过对数据的正确建模,设计人员就可以根据模型…

如何在Mac上允许主流浏览器使用弹出式窗口?这里有详细步骤

这篇文章教你如何关闭流行的Mac浏览器上的弹出窗口阻止程序,包括Safari、Chrome和Firefox。它还探讨了你可能希望这样做的原因及其影响。 如何在Mac上允许Safari使用弹出窗口 如果你经常在Mac上使用Safari,你会注意到默认情况下弹出窗口阻止程序是打开的。有时,这并不方便…

vim常用命令以及配置文件

layout: article title: “vim文本编译器” vim文本编辑器 有三种模式: 命令模式 文本模式, 末行模式 vim命令大全 - 知乎 (zhihu.com) 命令模式 插入 i: 切换到输入模式,在光标当前位置开始输入文本。 a: 进入插入模式,在光标下一个位置开始输入文…

springboot172基于springboot的二手车交易系统的设计与实现

二手车交易系统的设计与实现 摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统二手车交易信息管理难度大&…

three.js 匀速动画(向量表示速度)

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div>1. 匀速动画(向量表示速度)</div…