【numpy】中,对axis【轴】axis=0 axis=1的理解

版权声明:下文一部分为CSDN博主「贾辛洪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jiaxinhong/article/details/81772392

首先请看一下官方帮助的解释:

轴用来为超过一维的数组定义的属性,二维数据拥有两个轴:
- 第0轴,沿着行的方向,垂直往下,
- 第1轴,沿着列的方向,水平延伸。

注意看,官方对于0和1的解释是轴,也就是坐标轴。而坐标轴是有方向的,所以千万不要用行和列的思维去想axis,因为行和列是没有方向的,这样想会在遇到不同的例子时感到困惑。

根据官方的说法,1表示横轴,方向从左到右;0表示纵轴,方向从上到下
当axis=1时,数组的变化是横向的,而体现出来的是列的增加或者减少。

其实axis的重点在于方向,而不是行和列。具体到各种用法而言也是如此。当axis=1时,如果是求平均,那么是从左到右横向求平均;如果是拼接,那么也是左右横向拼接;如果是drop,那么也是横向发生变化,体现为列的减少。

当考虑了方向,即axis=1为横向,axis=0为纵向,而不是行和列,那么所有的例子就都统一了。

转载内容到此为止

简单的来记就是:

axis=0代表往跨行(down),而axis=1代表跨列(across),作为方法动作的副词。
在这里插入图片描述
例程:

import numpy as np
 
np.random.seed(123)#随机种子,功能是保证每次随机的都为定值,更换数值则可得其他种子
x=np.random.randint(0,5,[3,3,4])
print ("随机生成[0,5)范围内的,shape为3*3*4的数组(张量)")
print (x)
print ("axis=0,沿着选定0轴方向时,x张量的最大值")
print (x.max(axis=0))
print ("axis=1,沿着选定1轴方向时,x张量的最大值")
print (x.max(axis=1))
print ("axis=2,沿着选定2轴方向时,x张量的最大值")
print (x.max(axis=2))

结果展示

随机生成[0,5)范围内的,shape为3*3*4的数组(张量)
[[[2 4 2 1]
  [3 2 3 1]
  [1 0 1 1]]

 [[0 0 1 3]
  [4 0 0 4]
  [1 3 2 4]]

 [[2 4 0 0]
  [1 3 4 4]
  [4 1 3 2]]]
axis=0,沿着选定0轴方向时,x张量的最大值
[[2 4 2 3]
 [4 3 4 4]
 [4 3 3 4]]
axis=1,沿着选定1轴方向时,x张量的最大值
[[3 4 3 1]
 [4 3 2 4]
 [4 4 4 4]]
axis=2,沿着选定2轴方向时,x张量的最大值
[[4 3 1]
 [3 4 4]
 [4 4 4]]

补充
如果一个多维数组是3 *3 *4,他就是3维的,参数axis=0,指的就是第一维,即3那一个数轴;axis=1,即第二个3的那个数轴,axis=2,即最后4的那个数轴。

所以输出结果的张量形状,取决于剩余两个的大小:选择沿着第一维度的方向,则输出为3* 4的形状,同理可得其他结果的形状。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值