Python中Numpy库中的np.sum(array,axis=0,1,2...)怎么理解?

查看:1467
本文介绍了Python中Numpy库中的np.sum(array,axis=0,1,2...)怎么理解?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

c = np.array([[[0, 1, 2,3], 
               [4, 5, 6,7]],
               [[1, 2, 3,4],
                [5,6,7,8]]]
                
 print( c.sum(axis=0))
 print( c.sum(axis=1)) 
 print( c.sum(axis=2))   

请问三个输出该怎么理解?

解决方案

首先可以把c可以看作一个2x2的矩阵,而矩阵的每个元素是一个长度为4的数组(例如[0, 1, 2, 3]),因此c是一个三维array。

当参数axis = 0时,求矩阵每一列上元素的和。例如,对第一列上的两个数组[0, 1, 2, 3]和[1, 2, 3, 4]相加,返回一个新的数组[1, 3, 4, 7],后面的列依次类推。因此最后得到一个新的数组,即:

>>> np.sum(c,axis = 0)
array([[ 1,  3,  5,  7],
       [ 9, 11, 13, 15]])

axis = 1时,对矩阵每一行 上的元素进行求和,同上。

axis = 2时,对矩阵每个元素进行求和,即对你矩阵中每个列表内的元素求和,返回一个新的2x2矩阵。这听起来有些奇怪,但前提必须是一个三维数组,且axis的值必须小于数组的维度,否则会出现异常:

ValueError: 'axis' entry is out of bounds

此外,还能通过索引来得到c中的每个元素,例如:

>>> c[0] #第一行
array([[0, 1, 2, 3],
       [4, 5, 6, 7]])
>>> c[0,1] #第一行中的二个列表
array([4, 5, 6, 7])
>>> c[0, 1, 1] #第一行中的二个列表的第二个元素
5

希望答案对你有帮助。

这篇关于Python中Numpy库中的np.sum(array,axis=0,1,2...)怎么理解?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆