如何理解Axis?
前言
只有光头才能变强。
回顾前面:
不知道大家最开始接触到axis的时候是怎么样的,反正我是挺难理解的..我们可以发现TensorFlow的很多API都有axis这个参数,如果我们对axis不了解,压根不知道API是怎么搞的。
一句话总结axis: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:
首先,我们先看axis=0的情况,也就是tf.concat([t1, t2], 0)。从上面的描述,我们知道,先把第一个括号去除,然后将其子内容看成一个整体,在这个整体下进行想对应的运算(这里我们就是concat)。
所以最终的结果是:
[
[1 2 3],
[4 5 6],
[7 8 9],
[10 11 12]
]
接着,我们再看axis=1的情况,也就是tf.concat([t1, t2], 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:
首先,我们先看axis=0的情况,也就是tf.concat([t3, t4], 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)。
所以最终的结果是:
[
[
[1 2]
[2 3]
[7 4]
[8 4]
]
[
[4 4]
[5 3]
[2 10]
[15 11]
]
]
最后,我们来看一下axis=-1这种情况,在文档也有相关的介绍:
As in Python, the
axiscould also be negative numbers. Negativeaxis
are interpreted as counting from the end of the rank, i.e.,
axis + rank(values)-th dimension
所以,对于我们三维的数组而言,那axis=-1实际上就是axis=2,下面我们再来看一下这种情况:
最终的结果是:
[
[
[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])
参考资料:
- 有关axis/axes的理解
最后
下一篇是TensorBoard~
乐于输出干货的Java技术公众号:Java3y。公众号内有200多篇原创技术文章、海量视频资源、精美脑图,不妨来关注一下!
觉得我的文章写得不错,不妨点一下赞!
如何理解Axis?的更多相关文章
- [开发技巧]·Numpy中对axis的理解与应用
[开发技巧]·Numpy中对axis的理解与应用 1.问题描述 在使用Numpy时我们经常要对Array进行操作,如果需要针对Array的某一个纬度进行操作时,就会用到axis参数. 一般的教程都是针 ...
- pandas--对axis=0,axis=1的理解
Stackoverflow.com是程序员的好去处,本公众号将以pandas为主题,开始一个系列,争取做到每周一篇,翻译并帮助pandas学习者一起理解一些有代表性的案例.今天的主题就是Pandas与 ...
- 【学习笔记】Tensor多维数组和axis的理解
Tensor多维数组和axis的理解 今天在编写程序的时候一直对于axis=0或等于1搞不明白,这样对于整个numpy或者是tensorflow的基本运算和数据处理都会很模糊,所以花了一些时间来搞清楚 ...
- Python之NumPy(axis=0 与axis=1)区分
转自:http://blog.csdn.net/wangying19911991/article/details/73928172 https://www.zhihu.com/question/589 ...
- Python Pandas与Numpy中axis参数的二义性
Stackoverflow.com是程序员的好去处,本公众号将以pandas为主题,开始一个系列,争取做到每周一篇,翻译并帮助pandas学习者一起理解一些有代表性的案例.今天的主题就是Pandas与 ...
- PCIE_DMA实例三:Xilinx 7系列(KC705/VC709)FPGA的EDK仿真
一:前言 好久没写博客了,前段时间有个朋友加微信请教关于PCIe的一些学习方法.本人也不是专家,只是略知一些皮毛.对于大家反馈的问题未必能一一解答,但一定知无不言.以后我会常来博客园看看,大家可以把问 ...
- 什么是TensorBoard?
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾前面: 从零开始学TensorFlow[01-搭 ...
- TensorFlow读写数据
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾前面: 从零开始学TensorFlow[01-搭 ...
- Numpy库解析
python中的axis 其实问题理解axis有问题,df.mean其实是在每一行上取所有列的均值,而不是保留每一列的均值.也许简单的来记就是axis=0代表往跨行(down),而axis=1代表跨列 ...
随机推荐
- JavaScript常用的事件模型
一.事件绑定模型 DOM0事件模型 1.内联模型(行内绑定):将函数名直接作为HTML标签中事件属性的属性值 <button id="btn" onclick="f ...
- 基于ubuntu16.04快速构建Hyperledger Fabric网络
前言 最近在参加一个比赛,使用到了区块链的开源软件hyperledger,由于之前从未接触过区块链,以及和区块链开发相关的内容,所有在网上查阅了大量的资料,并且通过学习yeasy(杨宝华)开源的入门书 ...
- 【方案】mvc 保证定时器回收限制
在项目中我们或多或少的遇到一些需要定时触发或者计算的东西,这个时候我们就需要定时器来作为解决方案.非常好思路清晰,业务逻辑完好,定时器也开好了,当我们信心满满的挂到IIS服务器的时候,发现写的定时器在 ...
- 读《图解HTTP》有感-(确认访问用户身份的认证)
写在前面 认证机制能够保证特定的资源给特定的(经过认证的)用户访问.从而保证了资源的机密性. 正文 1.为什么要认证?认证的媒介是什么? 认证的目的在于确认访问者的身份,保证资源的私有性(只有经过特定 ...
- simple_list_item_1 和simple_list_item_2有什么区别???
在安卓系统自带的List View里, 有simple_list_item_1.simple_list_item_2.two_line_list_item等.以下对这些布局进行简要介绍: 1.simp ...
- css基础--深入理解弹性盒flex布局
欢迎访问我的个人博客:http://www.xiaolongwu.cn 1. 前言 flex弹性盒,是一种布局方式,当页面需要适应不同的屏幕大小以及设备类型时,它依然能确保元素 拥有更恰当的排布行为, ...
- 【java错误】Non-terminating decimal expansion; no exact representable decimal result
问题描述 意思是“无法结束的除法表达式:没有精确的除结果”.当时输入的10/3,结果应该是3.3333....333. 下面这种处理方式有问题. BigDecimal num3 = new BigDe ...
- ASP.NET Core & Docker 实战经验分享
一.前言 最近一直在研究和实践ASP.NET Core.Docker.持续集成.在ASP.NET Core 和 Dcoker结合下遇到了一些坑,在此记录和分享,希望对大家有一些帮助. 二.中间镜像 我 ...
- scala 访问阿里云oss
我们的数据一天就一个T,数据量不断增大,集群磁盘有限,所以把冷数据放到了oss,偶尔会使用到冷数据,如果使用的时候还的从oss上拉数据这样很浪费时间后来想了个办法可以直接获取到oss上的数据.案例:o ...
- Mysql-如何正确的使用索引以及索引的原理
一. 介绍 二. 索引的原理 三. 索引的数据结构 四. 聚集索引与辅助索引 五. MySQL索引管理 六. 测试索引 七. 正确使用索引 八. 联合索引与覆盖索引 九. 查询优化神器-explain ...