如何理解axis?

简介: 笔记

一、理解axis


如果你像我一样,发现API中有axis这个参数,但不知道是什么意思。可能就会搜搜axis到底代表的什么意思。于是可能会类似搜到下面的信息:

使用0值表示沿着每一列或行标签\索引值向下执行方法(axis=0代表往跨行)

使用1值表示沿着每一行或者列标签模向执行对应的方法(axis=1代表跨列)

但我们又知道,我们的数组不单单只有二维的,还有三维、四维等等。一旦维数超过二维,就无法用简单的行和列来表示了

所以,可以用我下面的方式进行理解:

  • axis=0将最开外头的括号去除,看成一个整体,在这个整体上进行运算
  • axis=1将第二个括号去除,看成一个整体,在这个整体上进行运算
  • …依次类推

话不多说,下面以例子说明~


1.1二维数组之concat


首先,我们来看个concat的例子,concat第一个参数接收val,第二个参数接收的是axis

def learn_concat():
    # 二维数组
    t1 = tf.constant([[1, 2, 3], [4, 5, 6]])
    t2 = tf.constant([[7, 8, 9], [10, 11, 12]])
    with tf.Session() as sess:
        # 二维数组针对 axis 为0 和 1 的情况
        print(sess.run(tf.concat([t1, t2], 0)))
        print(sess.run(tf.concat([t1, t2], 1)))

ok,下面以图示的方式来说明。现在我们有两个数组,分别是t1和t2:

70.png                                                 两个数组,t1和t2

首先,我们先看axis=0的情况,也就是tf.concat([t1, t2], 0)。从上面的描述,我们知道,先把第一个括号去除,然后将其子内容看成一个整体,在这个整体下进行想对应的运算(这里我们就是concat)。

71.png

                                    二维数组 axis=0的concat操作

所以最终的结果是:

[
    [1 2 3],
    [4 5 6],
    [7 8 9],
    [10 11 12]
]

接着,我们再看axis=1的情况,也就是tf.concat([t1, t2], 1)。从上面的描述,我们知道,先把第二个括号去除,然后将其子内容看成一个整体,在这个整体下进行想对应的运算(这里我们就是concat)。

72.png                                      axis=1理解 二维数组 concat

所以最终的结果是:

[
    [1, 2, 3, 7, 8, 9]
    [4, 5, 6, 10, 11, 12]
]


1.2三维数组之concat


接下来我们看一下三维的情况

def learn_concat():
    # 三维数组  
    t3 = tf.constant([[[1, 2], [2, 3]], [[4, 4], [5, 3]]])
    t4 = tf.constant([[[7, 4], [8, 4]], [[2, 10], [15, 11]]])
    with tf.Session() as sess:
        # 三维数组针对 axis 为0 和 1 和 -1 的情况
        print(sess.run(tf.concat([t3, t4], 0)))
        print(sess.run(tf.concat([t3, t4], 1)))
        print(sess.run(tf.concat([t3, t4], -1)))

ok,下面也以图示的方式来说明。现在我们有两个数组,分别是t3和t4:

73.png                                            两个数组,t3和t4

首先,我们先看axis=0的情况,也就是tf.concat([t3, t4], 0)。从上面的描述,我们知道,先把第一个括号去除,然后将其子内容看成一个整体,在这个整体下进行想对应的运算(这里我们就是concat)。

74.jpg

                                         axis=0理解 三维数组 concat

所以最终的结果是:

[
    [
        [1 2]
        [2 3]
    ]
    [
        [4 4]
        [5 3]
    ]
    [
        [7 4]
        [8 4]
    ]
    [
        [2 10]
        [15 11]
    ]
]

接着,我们再看axis=1的情况,也就是tf.concat([t3, t4], 1)。从上面的描述,我们知道,先把第二个括号去除,然后将其子内容看成一个整体,在这个整体下进行想对应的运算(这里我们就是concat)。

75.jpg

                                    axis=1理解 三维数组 concat

所以最终的结果是:

[
    [
        [1 2]
        [2 3]
        [7 4]
        [8 4]
    ]
    [
        [4 4]
        [5 3]
        [2 10]
        [15 11]
    ]
]

最后,我们来看一下axis=-1这种情况,在文档也有相关的介绍:

As in Python, the axis could also be negative numbers. Negative axis

are interpreted as counting from the end of the rank, i.e.,

axis + rank(values)-th dimension

所以,对于我们三维的数组而言,那axis=-1实际上就是axis=2,下面我们再来看一下这种情况:

76.jpg

                                       axis=-1理解 三维数组 concat

最终的结果是:

[
 [
  [1 2 7 4]
  [2 3 8 4]
 ]
 [
  [4 4 2 10]
  [5 3 15 11]
 ]
]

除了concat以外,其实很多函数都用到了axis这个参数,再举个例子:

>>> 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])
>>> item.sum(axis = 0)
array([ 6, 22, 21])

目录
相关文章
【IntelliJ IDEA】IDEA编辑器控制台显示中文乱码的解决方案
【IntelliJ IDEA】IDEA编辑器控制台显示中文乱码的解决方案
897 0
|
3月前
|
人工智能 自然语言处理 搜索推荐
教育行业Agent案例全解析:覆盖K12、高教、职教的落地实践与标杆范本
Salesforce调研显示,77%学生愿用AIAgent解决校园事务,83%管理者期待减负。本文基于真实案例,系统梳理K12、高校、职教三大场景中智能体在教学、管理、服务中的创新应用,揭示AI如何重塑教育未来。
546 4
|
7月前
|
机器学习/深度学习 算法 Java
Java 大视界 -- Java 大数据机器学习模型在舆情分析中的情感倾向判断与话题追踪(185)
本篇文章深入探讨了Java大数据与机器学习在舆情分析中的应用,重点介绍了情感倾向判断与话题追踪的技术实现。通过实际案例,展示了如何利用Java生态工具如Hadoop、Hive、Weka和Deeplearning4j进行舆情数据处理、情感分类与趋势预测,揭示了其在企业品牌管理与政府决策中的重要价值。文章还展望了多模态融合、实时性提升及个性化服务等未来发展方向。
|
3月前
|
API 开发者
1688买家/卖家店铺订单API接口指南
1688店铺订单API提供订单查询、详情获取、状态更新等功能,支持与ERP、CRM系统集成。可按条件筛选订单、获取商品及收货信息,同步发货与物流状态,并进行取消订单等操作。使用时需注意密钥授权、调用频率及异常处理,提升订单管理效率。
|
数据可视化 API 异构计算
一分钟部署 Llama3 中文大模型,没别的,就是快
Meta开源了80亿和700亿参数的大模型,挑战百度创始人李彦宏的观点。这些模型在性能上逼近GPT-4和Claude3。此外,一个400B的超大模型即将发布。Huggingface上已有多个Llama3中文微调版本。无GPU用户可使用量化模型在CPU上运行,如8B模型用8bit量化,70B模型用4bit量化。最佳中文微调版是zhouzr/Llama3-8B-Chinese-Chat-GGUF,可在三分钟内通过Sealos公有云快速部署,搭配WebUI如Lobe Chat进行交互。
1024 3
|
数据可视化 前端开发 数据挖掘
【优秀python大屏】基于python flask的广州历史天气数据应用与可视化大屏
本文介绍了一个基于Python Flask框架的广州历史天气数据应用与可视化大屏系统,该系统通过数据采集、处理、分析和可视化技术,提供了丰富的气象数据展示和决策支持,帮助用户快速了解和应对气象变化。
689 110
【优秀python大屏】基于python flask的广州历史天气数据应用与可视化大屏
|
安全 PHP
【PHP开发专栏】PHP文件上传与下载实现
【4月更文挑战第30天】本文介绍了在PHP中实现文件上传和下载的详细步骤。文件上传通过`$_FILES`全局数组处理,包括设置HTML表单、PHP脚本处理上传及安全性考虑。文件下载则可使用`readfile()`、`fpassthru()`或`file_get_contents()`函数,同时关注安全问题,如防止目录遍历漏洞。文中还提供了一个简单的图片分享网站案例,演示了上传和下载功能的集成。
314 1
|
安全 物联网 数据安全/隐私保护
物联网卡的一些限制条件
在选择物联卡时,确实需要注意一些限制条件,以确保物联卡的正常使用和满足设备的需求。以下是一些常见的限制条件:
|
存储 人工智能 数据挖掘
体验《AI大模型助力客户对话分析》
体验《AI大模型助力客户对话分析》
|
监控 小程序 前端开发
基于微信小程序充电桩预约管理系统的设计与实现(论文+源码)_kaic
基于微信小程序充电桩预约管理系统的设计与实现(论文+源码)_kaic