最近学习Numpy遇到axis,让我陷入深思(共两版-第1版)

2023-12-25 15:32

本文主要是介绍最近学习Numpy遇到axis,让我陷入深思(共两版-第1版),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

主要参考讲解:原作者博客连接:https://blog.csdn.net/xiongchengluo1129/article/details/79062991

主要从轴的变化方向讲解,axis=0、1、2时分别代表哪个轴。

拿简单的例子讲解:生成一个(2,4,2)的数组。

arr=np.arange(16).reshape(2,4,2)
arr
array([[[ 0,  1],[ 2,  3],[ 4,  5],[ 6,  7]],[[ 8,  9],[10, 11],[12, 13],[14, 15]]])

 第一步:标出各个元素的下标:

arr 数组对应元素的下标
000001
010011
020021
030031
100101
110111
120121
130131

其中,三个数字下标分别表示维、行、列。举例:000代表三位数组的第0个二维矩阵,第0个二维矩阵第0行,第0个二维矩阵第0列;同理,依次可以写出另外3个一块数字的含义。

第二步:以求和为例,分别计算axis=0、1、2时的值进行分析,进而得出结论。

arr.sum(axis=0)
array([[ 8, 10],[12, 14],[16, 18],[20, 22]])
arr.sum(axis=1)
array([[12, 16],[44, 48]])
arr.sum(axis=2)
array([[ 1,  5,  9, 13],[17, 21, 25, 29]])

从所得结果上可能不能直观的看出axis=0、1、2分别代表什么,接下来我们从下标变换的角度来谈:

axis=0,我们注意一下下标:

axis=0,我们看第一个下标变化,从0变到1,我们按此来进行操作(以例子为例,进行求和,就得到arr.sum(axis=0的结果))

arr.sum(axis=0)
array([[ 8, 10],[12, 14],[16, 18],[20, 22]])

axis=1,我们注意一下下标:

axis=1,我们看第二个下标变化,从0→1→2→3,我们按此来进行操作(以例子为例,进行求和,就得到arr.sum(axis=1的结果))

arr.sum(axis=1)
array([[12, 16],[44, 48]])

axis=2,我们注意一下下标:

axis=2,我们看第三个下标变化,从0→1,我们按此来进行操作(以例子为例,进行求和,就得到arr.sum(axis=2的结果))

arr.sum(axis=2)
array([[ 1,  5,  9, 13],[17, 21, 25, 29]])

以上图很直观的可以看出axis=0、1、2时,分别代表的是哪一个轴。就是沿此方向数字变化的方向

下面图片出自网址:下面图片来源:

 

三维的理解好了之后对于二维的就更容易理解,这里就不过多介绍了。

 

 

 

 

这篇关于最近学习Numpy遇到axis,让我陷入深思(共两版-第1版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

qtcreater配置opencv遇到的坑及实践记录

《qtcreater配置opencv遇到的坑及实践记录》我配置opencv不管是按照网上的教程还是deepseek发现都有些问题,下面是我的配置方法以及实践成功的心得,感兴趣的朋友跟随小编一起看看吧... 目录电脑环境下载环境变量配置qmake加入外部库测试配置我配置opencv不管是按照网上的教程还是de

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Jackson库进行JSON 序列化时遇到了无限递归(Infinite Recursion)的问题及解决方案

《Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursion)的问题及解决方案》使用Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursi... 目录解决方案‌1. 使用 @jsonIgnore 忽略一个方向的引用2. 使用 @JsonManagedR

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd

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

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

解决JavaWeb-file.isDirectory()遇到的坑问题

《解决JavaWeb-file.isDirectory()遇到的坑问题》JavaWeb开发中,使用`file.isDirectory()`判断路径是否为文件夹时,需要特别注意:该方法只能判断已存在的文... 目录Jahttp://www.chinasem.cnvaWeb-file.isDirectory()遇