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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

新春满满的祝福,春晚文字版节目单,养生篮球与吃喝玩乐——早读

新年快乐都是祝福 引言代码第一篇&#xff08;跳&#xff09; 人民日报 “兔兔&#xff0c;这一年辛苦了&#xff0c;接下来就交给我吧&#xff01;”第三篇 人民日报 【夜读】新年三愿&#xff1a;家人安康&#xff0c;生活美满&#xff0c;心怀希望第四篇 人民日报&#xff0…

Android应用图标微技巧,8.0系统中应用图标的适配

大家好,2018年的第一篇文章到的稍微有点迟,也是因为在上一个Glide系列结束之后一直还没想到什么好的新题材。 现在已经进入了2018年,Android 8.0系统也逐渐开始普及起来了。三星今年推出的最新旗舰机Galaxy S9已经搭载了Android 8.0系统,紧接着小米、华为、OV等国产手机厂…

【Java多线程案例】实现阻塞队列

1. 阻塞队列简介 1.1 阻塞队列概念 阻塞队列&#xff1a;是一种特殊的队列&#xff0c;具有队列"先进先出"的特性&#xff0c;同时相较于普通队列&#xff0c;阻塞队列是线程安全的&#xff0c;并且带有阻塞功能&#xff0c;表现形式如下&#xff1a; 当队列满时&…

【PWN · heap | Arbitrary Alloc】2015_9447ctf_search-engine

和【PWN heap | House Of Spirit】2014_hack.lu_oreo-CSDN博客略有区别&#xff0c;但都是通过malloc一块fake_chunk到指定区域&#xff0c;获得对该区域的写权限 目录 零、简单介绍 一、题目分析 1.主要功能 2.index_sentence(): 增添一条语句到“库”中 3.search_word(…

Leecode之分割链表

一.题目及剖析 https://leetcode.cn/problems/partition-list-lcci/description/ 二.思路引入 就是将其分成大小两个链表,以x为分界线进行分堆,最后再将两链表合并 三.代码引入 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct Lis…

Netty中的常用组件(三)

ChannelPipeline 基于Netty的网路应用程序中根据业务需求会使用Netty已经提供的Channelhandler 或者自行开发ChannelHandler&#xff0c;这些ChannelHandler都放在ChannelPipeline中统一 管理&#xff0c;事件就会在ChannelPipeline中流动&#xff0c;并被其中一个或者多个Chan…

【前端高频面试题--TypeScript篇】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;前端高频面试题 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 高频前端面试题--Vue3.0篇 什么是TypeScript&#xff1f;TypeScript数据类型TypeScript中命名空…

用python写个类

对类的简单概述 面向过程编程,是按照预定的顺序一步步执行,面向对象编程则是将相似的对象归为一类,定义它们的属性和行为,例如人有姓名,性别,年龄等属性,有吃饭,睡觉,学习等行为.这便是类,类是对象的模版,对象是类的实例,例如人是一个抽象的类,而张三是一个具体的对象. 学会用…

机器学习系列——(十九)层次聚类

引言 在机器学习和数据挖掘领域&#xff0c;聚类算法是一种重要的无监督学习方法&#xff0c;它试图将数据集中的样本分组&#xff0c;使得同一组内的样本相似度高&#xff0c;不同组间的样本相似度低。层次聚类&#xff08;Hierarchical Clustering&#xff09;是聚类算法中的…

Blazor Wasm Gitee 码云登录

目录: OpenID 与 OAuth2 基础知识Blazor wasm Google 登录Blazor wasm Gitee 码云登录Blazor SSR/WASM IDS/OIDC 单点登录授权实例1-建立和配置IDS身份验证服务Blazor SSR/WASM IDS/OIDC 单点登录授权实例2-登录信息组件wasmBlazor SSR/WASM IDS/OIDC 单点登录授权实例3-服务端…

分享66个表单按钮,总有一款适合您

分享66个表单按钮&#xff0c;总有一款适合您 66个表单按钮下载链接&#xff1a;https://pan.baidu.com/s/19lOG5sxI2Uy3KBIscffHRw?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不…

VUE学习——数组变化侦测

官方文档 变更方法&#xff1a; 使用之后&#xff0c;ui可以直接发生改变。改变原数组 替换数组&#xff1a; 使用之后需要接受重新赋值&#xff0c;不然ui不发生改变。不改变原数组

【开源】JAVA+Vue+SpringBoot实现实验室耗材管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 耗材档案模块2.2 耗材入库模块2.3 耗材出库模块2.4 耗材申请模块2.5 耗材审核模块 三、系统展示四、核心代码4.1 查询耗材品类4.2 查询资产出库清单4.3 资产出库4.4 查询入库单4.5 资产入库 五、免责说明 一、摘要 1.1…

股票均线的使用方法和实战技术,看涨看空的均线形态与案例教学

一、教程描述 本套教程讲解了14种均线的特殊形态&#xff0c;通过直观图形以及大量案例的教学&#xff0c;将深奥、繁琐的均线变得生动与具体&#xff0c;广大投资者在认真学习以后&#xff0c;可以学会均线的使用方法&#xff0c;掌握最强的均线应用实战技术。本套教程不仅适…

动态规划的一个初步学习

啥叫动态规划 在我们写很多的题目时&#xff0c;常常可以用暴力枚举来写&#xff0c;缺点就是速度太慢了。如果我们用一个数组或者哈希表&#xff08;虽然我还没学过哈希表&#xff09;将之前暴力枚举的数据储存起来&#xff0c;当再一次枚举到这个数字的时候就直接调用数组或…

使用vue-client-only 解决组件不兼容SSR问题

目录 前言 一、解决方案 1.基于Nuxt 框架的SSR应用 2.基于vue2框架的应用 3.基于vue3框架的应用 二、总结 往期回顾 前言 最近在我的单页面SSR应用上开发JSON编辑器功能&#xff0c;在引入组件后直接客户端跳转OK&#xff0c;但是在直接加载服务端渲染的时候一直报这…

并发容器(Map、List、Set)实战及其原理

目录 JUC包下的并发容器 CopyOnWriteArrayList 应用场景 CopyOnWriteArrayList使用 CopyOnWriteArrayList原理 CopyOnWriteArrayList 的缺陷 扩展知识&#xff1a;迭代器的 fail-fast 与 fail-safe 机制 ConcurrentHashMap 应用场景 ConcurrentHashMap使用 数…

阿里云幻兽帕鲁服务器免费搭建解决方法,白嫖阿里云

阿里云幻兽帕鲁服务器免费搭建方案&#xff0c;先在阿里云高校计划「云工开物」活动领取学生专享300元无门槛代金券&#xff0c;幻兽帕鲁专用服务器4核16G配置26元1个月、149元半年&#xff0c;直接使用这个无门槛300元代金券抵扣即可免费搭建幻兽帕鲁服务器。阿里云服务器网al…

2.8日学习打卡----初学RabbitMQ(三)

2.8日学习打卡 一.springboot整合RabbitMQ 之前我们使用原生JAVA操作RabbitMQ较为繁琐&#xff0c;接下来我们使用 SpringBoot整合RabbitMQ&#xff0c;简化代码编写 创建SpringBoot项目&#xff0c;引入RabbitMQ起步依赖 <!-- RabbitMQ起步依赖 --> <dependency&g…

小游戏和GUI编程(3) | 基于 SFML 的字符阵

小游戏和GUI编程(3) | 基于 SFML 的字符阵 1. 简介 使用 EasyX 图形库时&#xff0c; 官方第一个例子是字符阵。 EasyX 不开源&#xff0c; 也不能跨平台&#xff0c; API 陈旧&#xff0c; API 是 C 而不是 C。 现在使用 SFML 来实现字符阵&#xff0c; 克服 EasyX 的这些问…