numpy基础之swapaxes

1 numpy基础之swapaxes

ndarray数组元素都可以用轴的索引进行唯一标识。

numpy中ndarray.transpose()的入参axes轴数量需要ndarray.ndim个(轴数量个,有多少个轴就要送多少个),而swapaxes()只需要2个。即,transpose()可以一次交换全部轴,而swapaxes()一次只能交换2个轴。

用法

ndarray.swapaxes(axis1, axis2)

描述

ndarray.swapaxes()将ndarray数组元素在两个轴上的索引进行交换。

入参

axis1:要交换的第1个轴的索引;

axis2:要交换的第2个轴的索引;

注意:轴的索引从0开始,比如,array([[0, 1, 2]])有2个轴,shape为(1,3),轴索引为(0,1)。

ndarray.swapaxes(m,n)等价于ndarray.swapaxes(n,m),即交换的两个轴只要索引位置一样,两个轴按不同顺序交换,其结果是一致的。

1.1 一维数组调用swapaxes

描述

因为ndarray.swapaxes()需要2个轴作为入参,所以,一维数组不可调用swapaxes()

示例

>>> import numpy as np
# 创建1维数组
>>> ar1=np.arange(3)
>>> ar1
array([0, 1, 2])
# 一维数组调用swapaxes()报错
>>> ar1.swapaxes(0,1)
Traceback (most recent call last):File "<pyshell#3>", line 1, in <module>ar1.swapaxes(0,1)
# 轴1(axis 1)即axis2的入参超出维度为1的数组的范围
numpy.exceptions.AxisError: axis2: axis 1 is out of bounds for array of dimension 1
>>> ar1.swapaxes()
Traceback (most recent call last):File "<pyshell#4>", line 1, in <module>ar1.swapaxes()
TypeError: swapaxes() takes exactly 2 arguments (0 given)

1.2 二维数组调用swapaxes

描述

swapaxes()将元素在两个轴上的索引进行交换。

在这里插入图片描述

比如,array([[0, 1, 2]]),shape为(1,3),轴索引为(0,1)。

元素3的索引为[0,2],其中0表示在0轴上的索引为0,而2表示在1轴上的索引为2。

转换后元素3的索引为[2,0],2表示在0轴上的索引,0表示在1轴上的索引。

即元素通过swapaxes(0,1)转换后,0轴上的索引由0变为1轴上的索引2,而1轴上的索引由2变为0轴上的索引0.

示例

>>> import numpy as np
# 创建2维数组,1行3列
>>> ar2=np.arange(3).reshape((1,3))
>>> ar2
array([[0, 1, 2]])
>>> ar2.shape
(1, 3)
>>> ar2.ndim
2
# swapaxes(0,1)将0轴和1轴上的元素进行索引互换。
>>> ar2.swapaxes(0,1)
array([[0],[1],[2]])
>>> ar2
array([[0, 1, 2]])
# swapaxes(0,1)等价于swapaxes(1,0)
>>> ar2.swapaxes(1,0)
array([[0],[1],[2]])

1.3 三维数组调用swapaxes

描述

swapaxes()将元素在两个轴上的索引进行交换。

在这里插入图片描述

比如,ar3=np.arange(16).reshape(2,2,4),shape为(2,2,4),其中元素10的索引为[1,0,2],

通过ar3.swapaxes(0,2)将0轴和2轴索引转换后为[2,0,1]。

并且,ar3.swapaxes(2,0)等价于ar3.swapaxes(0,2)。

示例

>>> import numpy as np
# 创建3维数组
>>> ar3=np.arange(16).reshape(2,2,4)
>>> ar3
array([[[ 0,  1,  2,  3],[ 4,  5,  6,  7]],[[ 8,  9, 10, 11],[12, 13, 14, 15]]])
>>> ar3.shape
(2, 2, 4)
>>> ar3_sw=ar3.swapaxes(0,2)
>>> ar3_sw
array([[[ 0,  8],[ 4, 12]],[[ 1,  9],[ 5, 13]],[[ 2, 10],[ 6, 14]],[[ 3, 11],[ 7, 15]]])
# 元素10,通过swapaxes(0,2)
# 将0轴索引1转为2轴索引2
# 将2轴索引2转为0轴索引0,得[2,0,1]
>>> ar3[1,0,2],ar3_sw[2,0,1]
(10, 10)
>>> ar3[1,1,0],ar3_sw[0,1,1]
(12, 12)
# ar3.swapaxes(2,0)等价于ar3.swapaxes(0,2)
>>> ar3.swapaxes(2,0)==ar3.swapaxes(0,2)
array([[[ True,  True],[ True,  True]],[[ True,  True],[ True,  True]],[[ True,  True],[ True,  True]],[[ True,  True],[ True,  True]]])

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

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

相关文章

第二节 zookeeper基础应用与实战

目录 1. Zookeeper命令操作 1.1 Zookeeper 数据模型 1.2 Zookeeper服务端常用命令 1.3 Zookeeper客户端常用命令 1.3.1 基本CRUD 1.3.2 创建临时&顺序节点 2. Zookeeper JavaAPI操作 2.1 Curator介绍 2.2 引入Curator 2.3 建立连接 2.4 添加节点 2.5 修改节点 …

利用Python画布之乌龟的爬行

一.基础操作 1.引入turtle库 首先&#xff0c;在你的Python代码中引入turtle库&#xff0c;代码如下&#xff1a; import turtle 2.创建画布 要创建一个画布&#xff0c;你可以使用turtle库中的Screen类。Screen类提供了一个窗口&#xff0c;你可以在其中创建一个画布。下…

LLaMA 入门指南

LLaMA 入门指南 LLaMA 入门指南LLaMA的简介LLaMA模型的主要结构Transformer架构多层自注意力层前馈神经网络Layer Normalization和残差连接 LLaMA模型的变体Base版本Large版本Extra-Large版本 LLaMA模型的特点大规模数据训练 LLaMA模型常用数据集介绍公共数据来源已知的数据集案…

数据分析基础之《pandas(7)—高级处理2》

四、合并 如果数据由多张表组成&#xff0c;那么有时候需要将不同的内容合并在一起分析 1、先回忆下numpy中如何合并 水平拼接 np.hstack() 竖直拼接 np.vstack() 两个都能实现 np.concatenate((a, b), axis) 2、pd.concat([data1, data2], axis1) 按照行或者列…

Python中的嵌套字典访问与操作详解

前言 在Python编程中&#xff0c;嵌套字典是一种常见的数据结构&#xff0c;它可以以层次结构的方式组织和存储数据。嵌套字典通常包含字典内嵌套在其他字典中&#xff0c;创建了一种多层级的数据结构。本文将详细介绍如何在Python中访问和操作嵌套字典&#xff0c;包括访问、…

SpringCloud-Ribbon实现负载均衡

在微服务架构中&#xff0c;负载均衡是一项关键的技术&#xff0c;它可以确保各个服务节点间的负载分布均匀&#xff0c;提高整个系统的稳定性和性能。Spring Cloud 中的 Ribbon 就是一种负载均衡的解决方案&#xff0c;本文将深入探讨 Ribbon 的原理和在微服务中的应用。 一、…

前端工程化面试题 | 02.精选前端工程化高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

材料非线性Matlab有限元编程:切线刚度法

导读:本文主要围绕材料非线性问题的有限元Matlab编程求解进行介绍,重点围绕牛顿-拉普森法(切线刚度法)、初应力法、初应变法等三种非线性迭代方法的算法原理展开讲解,最后利用Matlab对材料非线性问题有限元迭代求解算法进行实现,展示了实现求解的核心代码。这些内容都将收…

【机器学习笔记】回归算法

回归算法 文章目录 回归算法1 线性回归2 损失函数3 多元线性回归4 线性回归的相关系数 1 线性回归 回归分析(Regression) 回归分析是描述变量间关系的一种统计分析方法 例&#xff1a;在线教育场景 因变量 Y&#xff1a;在线学习课程满意度 自变量 X&#xff1a;平台交互性、教…

【Go】三、Go并发编程

并发编程 我们主流的并发编程思路一般有&#xff1a;多进程、多线程 但这两种方式都需要操作系统介入&#xff0c;进入内核态&#xff0c;是十分大的时间开销 由此而来&#xff0c;一个解决该需求的技术出现了&#xff1a;用户级线程&#xff0c;也叫做 绿程、轻量级线程、协…

CSP-202012-1-期末预测之安全指数

CSP-202012-1-期末预测之安全指数 题目很简单&#xff0c;直接上代码 #include <iostream> using namespace std; int main() {int n, sum 0;cin >> n;for (int i 0; i < n; i){int w, score;cin >> w >> score;sum w * score;}if (sum > 0…

解放双手!ChatGPT助力编写JAVA框架!

摘要 本文介绍了使用 ChatGPT逐步创建 一个简单的Java框架&#xff0c;包括构思、交流、深入优化、逐步完善和性能测试等步骤。 亲爱的Javaer们&#xff0c;在平时编码的过程中&#xff0c;你是否曾想过编写一个Java框架去为开发提效&#xff1f;但是要么编写框架时感觉无从下…