一文读懂Numpy(Tensorflow)里面的轴(Axis)

article/2025/5/11 4:54:42

目录以及结论

  • Axis就是数组层级
  • 设axis=i,则Numpy沿着第i个下标变化的方向进行操作
  • Axis的应用

Axis就是数组层级

要想理解axis,首先我们先要弄清楚“Numpy中数组的维数”和"线性代数中矩阵的维数"这两个概念以及它们之间的关系。在数学或者物理的概念中,dimensions被认为是在空间中表示一个点所需要的最少坐标个数,但是在Numpy中,dimensions指代的是数组的维数。比如下面这个例子:

>>> import numpy as np
>>> a = np.array([[1,2,3],[2,3,4],[3,4,9]])
>>> a
array([[1, 2, 3],[2, 3, 4],[3, 4, 9]])

这个array的维数只有2,即axis轴有两个,分别是axis=0和axis=1。如下图所示,该二维数组的第0维(axis=0)有三个元素(左图),即axis=0轴的长度length为3;第1维(axis=1)也有三个元素(右图),即axis=1轴的长度length为3。正是因为axis=0、axis=1的长度都为3,矩阵横着竖着都有3个数,所以该矩阵在线性代数是3维的(rank秩为3)。
在这里插入图片描述
因此,axis就是数组层级。
当axis=0,该轴上的元素有3个(数组的size为3)
a[0]、a[1]、a[2]
当axis=1,该轴上的元素有3个(数组的size为3)
a[0][0]、a[0][1]、a[0][2]
(或者a[1][0]、a[1][1]、a[1][2])
(或者a[2][0]、a[2][1]、a[2][2])
再比如下面shape为(3,2,4)的array:

>>> b = np.array([[[1,2,3,4],[1,3,4,5]],[[2,4,7,5],[8,4,3,5]],[[2,5,7,3],[1,5,3,7]]])
>>> b
array([[[1, 2, 3, 4],[1, 3, 4, 5]],[[2, 4, 7, 5],[8, 4, 3, 5]],[[2, 5, 7, 3],[1, 5, 3, 7]]])
>>> b.shape
(3, 2, 4)

这个shape(用tuple表示)可以理解为在每个轴(axis)上的size,也即占有的长度(length)。为了更进一步理解,我们可以暂时把多个axes想象成多层layers。axis=0表示第一层(下图黑色框框),该层数组的size为3,对应轴上的元素length = 3;axis=1表示第二层(下图红色框框),该层数组的size为2,对应轴上的元素length = 2;axis=2表示第三层(下图蓝色框框),对应轴上的元素length = 4。
在这里插入图片描述

设axis=i,则Numpy沿着第i个下标变化的方向进行操作

1.二维数组示例:

比如np.sum(a, axis=1),结合下面的数组, a[0][0]=1、a[0][1]=2、a[0][2]=3 ,下标会发生变化的方向是数组的第一维。
在这里插入图片描述
我们往下标会变化的方向,把元素相加后即可得到最终结果:

[[6],[9],[16]
]

2.三维数组示例:

再举个例子,比如下边这个np.shape(a)=(3,2,4)的3维数组,该数组第0维的长度为3(黑色框框),再深入一层,第1维的长度为2(红色框框),再深入一层,第2维的长度为4(蓝色框框)。
在这里插入图片描述
如果我们要计算np.sum(a, axis=1),在第一个黑色框框中,
在这里插入图片描述
下标的变化方向如下所示:
在这里插入图片描述
所以,我们要把上下两个红色框框相加起来
在这里插入图片描述
按照同样的逻辑处理第二个和第三个黑色的框框,可以得出最终结果:
在这里插入图片描述
所以,依然是我们前边总结的那一句话,设axis=i,则Numpy沿着第i个下标变化的方向进行操作。
3.四维数组示例:
比如下面这个巨复杂的4维数组,

>>> data = np.random.randint(0, 5, [4,3,2,3])
>>> data
array([[[[4, 1, 0],[4, 3, 0]],[[1, 2, 4],[2, 2, 3]],[[4, 3, 3],[4, 2, 3]]],[[[4, 0, 1],[1, 1, 1]],[[0, 1, 0],[0, 4, 1]],[[1, 3, 0],[0, 3, 0]]],[[[3, 3, 4],[0, 1, 0]],[[1, 2, 3],[4, 0, 4]],[[1, 4, 1],[1, 3, 2]]],[[[0, 1, 1],[2, 4, 3]],[[4, 1, 4],[1, 4, 1]],[[0, 1, 0],[2, 4, 3]]]])

当axis=0时,numpy沿着第0维的方向进行求和,也就是第一个元素值=a0000+a1000+a2000+a3000=11,第二个元素=a0001+a1001+a2001+a3001=5,同理可得最后的结果如下:

>>> data.sum(axis=0)
array([[[11,  5,  6],[ 7,  9,  4]],[[ 6,  6, 11],[ 7, 10,  9]],[[ 6, 11,  4],[ 7, 12,  8]]])

当axis=3时,numpy沿着第3维的方向进行求和,也就是第一个元素值=a0000+a0001+a0002=5,第二个元素=a0010+a0011+a0012=7,同理可得最后的结果如下:

>>> data.sum(axis=3)
array([[[ 5,  7],[ 7,  7],[10,  9]],[[ 5,  3],[ 1,  5],[ 4,  3]],[[10,  1],[ 6,  8],[ 6,  6]],[[ 2,  9],[ 9,  6],[ 1,  9]]])

Axis的应用

例如现在我们收集了四个同学对苹果、榴莲、西瓜这三种水果的喜爱程度进行打分的数据(总分为10),每个同学都有三个特征:

>>> item = np.array([[1,4,8],[2,3,5],[2,5,1],[1,10,7]])
>>> item
array([[1, 4, 8],[2, 3, 5],[2, 5, 1],[1, 10, 7]])

每一行包含了同一个人的三个特征,如果我们想看看哪个同学最喜欢吃水果,那就可以用:

>>> item.sum(axis = 1)
array([13, 10,  8, 18])

可以大概看出来同学4最喜欢吃水果。

如果我们想看看哪种水果最受欢迎,那就可以用:

>>> item.sum(axis = 0)
array([ 6, 22, 21])

可以看出基本是榴莲最受欢迎。


http://chatgpt.dhexx.cn/article/lUBb5xTO.shtml

相关文章

axios基础(一)

1.封装 最简单的封装&#xff08;这个了解下就行&#xff0c;主要看下下面&#xff09; <button onclick"testPost()">发送POST请求</button><script>function testGet(){axios({url:"https://api.hh2022.cn/main/searchPage/2023/1/5"…

Axios的简单学习(一文上手Axios!)

页内目录 一&#xff0c;Axios的介绍 二&#xff0c;Axios的配置 三&#xff0c;Axios的基本格式 四&#xff0c;使用Axios获取数据 一&#xff0c;Axios的介绍 官方介绍 Axios 是一个基于 promise 的 HTTP 库&#xff0c;可以用在浏览器和 node.js 中&#xff0c;在Vue中官方…

手撕numpy(五):一招帮你彻底搞懂axis=0和axis=1

↑ 关注 星标 ~ 有趣的不像个技术号 每晚九点&#xff0c;我们准时相约 大家好&#xff0c;我是黄同学 手撕numpy系列持续更新中~ 《手撕numpy(一)&#xff1a;简单说明和创建数组的不同方式》 《手撕numpy(二)&#xff1a;各种特性和简单操作》 《手撕numpy(三)&#xff1a…

Tesorflow学习axis=1

Tesorflow学习axis1 cnp.concatenate(a,b,axis0) axiso 跨行 import numpy as np anp.array([[1,2,3],[4,5,6]]) print(a,a) bnp.array([[7,8,9],[10,11,12]]) print(b,b) cnp.concatenate((a,b),axis0) print(c,c)axis1 跨列 cnp.concatenate(a,b,axis1) 参考&#xff1a;htt…

axios(快速入门)

1、axios的理解和使用 1.1 axios的概述 1.前端最流行的ajax请求库 2.react、vue官方都推荐使用axios访问ajax请求 3.文档https://github.com/axios/axios 4.axios中文网axios中文网|axios API 中文文档 | axios (axios-js.com) 1.2 axios的特点 基于xhr promise的异步ajax请求…

pyechart笔记:opts.AxisOpts

定制化图表的轴线&#xff08;x轴和y轴&#xff09;的样式和设置 0 不设置坐标轴 c1(Bar().add_xaxis([力量,智力,敏捷]).add_yaxis(全能骑士,# 系列名称&#xff0c;用于 tooltip 的显示&#xff0c;legend 的图例筛选。[429,321,296],#系列数据).add_yaxis(猴子,[352,236,4…

axios快速上手,详细解读

一、axios的理解 1. axios是什么 前端最流行的 ajax 请求库react/vue 官方都推荐使用 axios 发 ajax 请求axios文档 2. axios的特点 基于 xhr promise 的异步 ajax 请求库浏览器端/node 端都可以使用支持请求&#xff0f;响应拦截器支持请求取消请求/响应数据转换批量发送…

Micropython——使用匿名上位机工作站实现电机参数实时绘图并PID调参

感谢龙哥指导使用如此优秀的上位机调参软件快速实现基于pyb开发的机器人PID参数的调节整定。 匿名工作站上位机简介 【经验篇】匿名上位机4.34简单上手 使用匿名工作站上位机可以快速完成对机器人底盘电机的PID参数整定&#xff0c;而且绘图速度极快&#xff0c;基本无延时&a…

axios--》axios初步操作

目录 初识axios axios常用语法 axios发送get请求 axios发送post请求 axios发送Ajax请求 初识axios axios是一个基于promise的网络请求库&#xff0c;作用于node.js和浏览器中&#xff0c;在服务端它使用原生node.js 的 http 模块&#xff0c;而在客户端(浏览器)则使用 X…

Axios(万字详细教程)

Axios介绍 1、Axios是什么&#xff1f; Axios是一个基于promise的HTTP库&#xff0c;类似于jQuery的ajax&#xff0c;用于http请求。可以应用于浏览器端和node.js&#xff0c;既可以用于客户端&#xff0c;也可以用于node.js编写的服务端。 2、Axios特性 &#xff08;1&…

R语言主成分回归(PCR)、 多元线性回归特征降维分析光谱数据和汽车油耗、性能数据...

原文链接&#xff1a;http://tecdat.cn/?p24152 什么是PCR&#xff1f;&#xff08;PCR PCA MLR&#xff09;&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 • PCR是处理许多 x 变量的回归技术• 给定 Y 和 X 数据&#xff1a;• 在 X 矩阵上进行 PCA– …

ESL3.5 学习笔记(主成分回归,偏最小二乘回归步骤详解)

3.5 运用派生输入方向的方法 这是一篇有关《统计学习基础》&#xff0c;原书名The Elements of Statistical Learning的学习笔记&#xff0c;该书学习难度较高&#xff0c;有很棒的学者将其翻译成中文并放在自己的个人网站上&#xff0c;翻译质量非常高&#xff0c;本博客中有…

R语言高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据

最近我们被客户要求撰写关于高维数据惩罚回归的研究报告&#xff0c;包括一些图形和统计输出。 主成分分析PCA降维方法和R语言分析葡萄酒可视化实例 主成分分析PCA降维方法和R语言分析葡萄酒可视化实例 &#xff0c;时长04:30 1 介绍 在本文中&#xff0c;我们将研究以下主题…

回归预测 | MATLAB实现PCR(主成分回归)多输入单输出

回归预测 | MATLAB实现PCR(主成分回归)多输入单输出(PCA Regression) MATLAB实现数据降维的PCA(主成分分析)函数有pca和pcacov两个。 pca函数可以直接利用原始数据进行主成分分析; pcacov函数针对原始数据的协方差矩阵进行主成分分析,本程序实现了两种分析方法的预测结果对比…

Python数据分析案例22——财经新闻可信度分析(线性回归,主成分回归,随机森林回归)

本次案例还是适合人文社科领域&#xff0c;金融或者新闻专业。本科生做线性回归和主成分回归就够了&#xff0c;研究生还可以加随机森林回归&#xff0c;其方法足够人文社科领域的硕士毕业论文了。 案例背景 有八个自变量&#xff0c;[微博平台可信度,专业性,可信赖性,转发量,…

matlab实现主成分回归

主成分回归就是先对数据进行主成分分析&#xff0c;再进行多元线性回归。 主成分分析参考上篇博客&#xff0c;蹦篇博客介绍多元线性回归及其MATLAB实现。 多元线性回归是一种常用的线性建模方法。如果有两个或两个以上的自变量&#xff0c;就称为多元回归。事实上&#xff0c;…

R语言主成分回归(PCR)、 多元线性回归特征降维分析光谱数据和汽车油耗、性能数据

最近我们被客户要求撰写关于主成分回归的研究报告&#xff0c;包括一些图形和统计输出。 什么是PCR&#xff1f;&#xff08;PCR PCA MLR&#xff09; • PCR是处理许多 x 变量的回归技术 • 给定 Y 和 X 数据&#xff1a; • 在 X 矩阵上进行 PCA – 定义新变量&#xff1…

主成分回归python实现

主成分分析python实现 这是我一直都想写的内容&#xff0c;但是迟迟没有动手开始写&#xff0c;主要的原因是没有理解python中PCA降维后再进行回归时应该要怎么做。再网上查了很多资料&#xff0c;也没有这方面的讲解&#xff0c;书上也是讲到了PCA降维就结束了。以下是我使用…

基于R语言的主成分回归(PCR)与Lasso回归在水稻基因组预测中的对比(生信数基实验作业)

基于R语言的主成分回归&#xff08;PCR&#xff09;与Lasso回归在水稻基因组预测中的对比 0 引言 全基因组选择是 21 世纪动植物育种的一种重要的选择策略&#xff0c;其核心就是全基因组预测&#xff0c;即基于分布在整个基因组上的多样性分子标记来对育种值进行预测&#x…

SPSS 特征筛选、主成分回归

小数据 → y&#xff1a;连续性变量 → x&#xff1a;6个以内 → 理论 → 验证 → 统计分析&#xff1b; 大数据 → y&#xff1a;分类变量 → x&#xff1a;15个以内 → 探索 → 数据挖掘&#xff1b; 一、X的选择流程 业务&#xff08;业务专家&#xff09;&#xff1a;运…