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