9、Numpy库---Axis理解


之前的课程中,为了方便大家理解,我们说axis=0代表的是行,axis=1代表的是列。但其实不是这么简单理解的。这里我们专门用一节来解释一下这个axis轴的概念。

除了delete用axis=0表示行以外,其他的大部分函数都是axis=1来表示行。

简单来说, 最外面的括号代表着 axis=0,依次往里的括号对应的 axis 的计数就依次加 1。什么意思呢?下面再来解释一下。
在这里插入图片描述
最外面的括号就是axis=0,里面两个子括号axis=1。 操作方式:如果指定轴进行相关的操作,那么他会使用轴下的每个直接子元素的第0个,第1个,第2个…分别进行相关的操作。

现在我们用刚刚理解的方式来做几个操作。比如现在有一个二维的数组:

x = np.array([[0,1],[2,3]])
print(x)
# [[0 1]
#  [2 3]]

1、求x数组在axis=0和axis=1两种情况下的和:

print(x.sum(axis=0)) #结果为:[2 4]

为什么得到的是[2,4]呢,原因是我们按照axis=0的方式进行相加,那么就会把最外面轴下的所有直接子元素中的第0个位置进行相加,第1个位置进行相加…依此类推,得到的就是0+2以及2+3,然后进行相加,得到的结果就是[2,4]。

print(x.sum(axis=1)) #结果为:[1 5]

因为我们按照axis=1的方式进行相加,那么就会把轴为1里面的元素拿出来进行求和,得到的就是0,1,进行相加为1,以及2,3进行相加为5,所以最终结果就是[1,5]了。

2、用.max求axis=0和axis=1两种情况下的最大值:

np.random.seed(100)#没啥影响,如果不懂看上一节介绍。
x = np.random.randint(0,10,size=(3,5))
print(x)
# [[8 8 3 7 7]
#  [0 4 2 5 2]
#  [2 2 1 0 8]]
print(x.max(axis=0)) #结果为:[8, 8, 3, 7, 8]

因为我们是按照axis=0进行求最大值,那么就会在最外面轴里面找直接子元素,然后将每个子元素的第0个值放在一起求最大值,将第1个值放在一起求最大值,将第2个值放在一起求最大值,以此类推。而如果axis=1,那么就是拿到每个直接子元素,然后求每个子元素中的最大值:

print(x.max(axis=1)) #结果为:[8, 5, 8])

3、用.delete在axis=0和axis=1两种情况下删除元素:

#3、用.delete在axis=0和axis=1两种情况下删除元素:
x = np.array([[0,1],[2,3]])
print(x)
# [[0 1]
#  [2 3]]
print(np.delete(x,0,axis=0)) #结果为:[[2, 3]]

np.delete是个例外。我们按照axis=0的方式进行删除,那么他会首先找到最外面的括号下的直接子元素中的第0个,然后删掉,剩下最后一行的数据。

print(np.delete(x,0,axis=1))
# [[1]
#  [3]]

同理,如果我们按照axis=1进行删除,那么会把第一列的数据删掉。

4、三维以上数组:

在这里插入图片描述
按照之前的理论,如果以上数组按照axis=0的方式进行相加,得到的结果如下:
在这里插入图片描述
如果是按照axis=1的方式进行相加,得到的结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值