numpy方法中的axis参数理解

https://blog.csdn.net/weixin_43684951/article/details/86365522

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]
————————————————
版权声明:本文为CSDN博主「魏晋小子」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43684951/article/details/86365522

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值