numpy方法中的axis参数理解

本文详细解析了NumPy库中np.sum函数的使用方法,特别是axis参数在二维和三维数组求和中的作用,帮助读者深入理解不同维度下数据聚合的逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.对于numpy中的二维数组

在这里插入图片描述

In[4]中,np.sum(a)没有指定axis参数值,此时表示将a平铺成为一个一维向量求取所有元素的和
In[5]中,np.sum(a, axis=0) 指定axis=0表示按照列来操作,最后得到的结果是每一列的和
In[6]中,np.sum(a, axis=1) 指定axis=1表示按照行来操作,最后得到的结果是每一行的和

2.对于numpy中的三维数组

在这里插入图片描述

此矩阵尺寸是 (2, 3, 4) 页,行,列
In[3]中,np.sum(a)没有指定axis参数值,此时表示将a平铺成为一个一维向量求取所有元素的和
In[4]中,np.sum(a, axis=0) 指定axis=0表示按照页来操作,最后得到的结果是每一页对应位置元素的和 输出(3, 4)
In[5]中,np.sum(a, axis=1) 指定axis=1表示按照列来操作,最后得到的结果是每一页每一列的和 输出(2, 4)
In[6]中,np.sum(a, axis=2) 指定axis=2表示按照行来操作,最后得到的结果是每一页每一行的和 输出(2, 3)

3.对于参数axis取值的一些个人理解(仅供参考)

  • 个人平时用到的numpy中的数组绝大多数是二维和三维,所以针对上述的理解已经足够使用;numpy中的很多方法中的axis参数的设置与numpy.sum中的axis参数意义基本上一致,理解上面的例子基本可以应对axis出现的大多数场景
    在这里插入图片描述
  • 更一般地理解axis参数值是与shape函数的输出元组中的值有一些联系

例1中 a.shape:(3, 4)

当axis=0时,表示在a.shape[0]这一个方向上进行操作,
将具有相同的a.shape[1]方向上的值集中操作,最后的操作结果是消除这一个方向,结果变为了(4,),而在本例中a是二维数组,a.shape[0]:3,表示的数组行数,那么消除行的操作,就是按照列来操作,将同一列的元素进行求和;
当axis=1时,同理是为了消除a.shape[1]这一个方向的操作,结果必然为(3,),即为对每一行的数据进行求和。

例2中 a.shape:(2, 3, 4)

当axis=0时,表示在a.shape[0]这一个方向上进行操作,最后的操作结果是消除这一个方向,即将页这一个方向消除,结果变为了(3, 4),
而在本例中a是三维数组,a.shape[0]:2,表示的数组页数,那么消除页的操作,就是按照行和列来操作,将具有相同行和列的元素进行求和(就是上文中描述的将每一页中对应位置的元素求和);当axis=1时,同理是为了消除a.shape[1]这一个方向的操作,结果必然为(2, 4),即为对具有相同页和列的数据进行求和;同理当axis=2时,同理是为了消除a.shape[2]这一个方向的操作,结果必然为(2, 3),即为对具有相同页和行的数据进行求和。

  • 总结一下就是:设len(a.shape) = ndim,当axis=n,操作的结果就是要消除第n个维度,将具有相同的其他ndim-1个维度上的元素集中操作,输出结果的维度为ndim-1
    例如np.sum(a, axis=0) a是二维数组,a[:, 0] a[:, 1] … a[:, a.shape[1]-1] 均为一个向量,且每一个向量中的元素都具有相同的列,
    np.sum(a, axis=0) = [np.sum(a[:, 0]), np.sum(a[:, 1]), …, np.sum(a[:, a.shape[1]-1])] 长度是a.shape[1]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值