python中sum函数详解

python3中sum的用法

python内置的sum函数

对象是列表,元组,集合,可以混合起来使用

	
	>>>sum([1,2,3],2)
	8
	>>>sum((1,2,3))
	6
	>>>sum({1,2,3})
	6
	>>>sum(range(5))
	10



 

numpy中sum函数


	import numpy as np
	>>>np.sum([[1,2,3], [4,5,6]])
	21
	>>>np.sum([[1,2,3],[4,5,6]], axis=0)
	[5, 7, 9]
	>>>np.sum([[1,2,3],[4,5,6]], axis=1)
	[6, 15]


axis的取值有三种情况:1.None,2.整数, 3.整数元组。
(在默认/缺省的情况下,axis取None)
如果axis取None,即将数组/矩阵中的元素全部加起来,得到一个和。
(如果注明了类型,会先将数组中的数字进行类型转换,再求和)

>>> np.sum([0.5, 1.5])
2.0
>>> np.sum([0.5, 0.7, 0.2, 1.5], dtype=np.int32)
1
>>> np.sum([0.5, 0.7, 0.2, 1.5])
2.9
>>> np.sum([[0, 1], [0, 5]])
6

如果axis为整数,axis的取值不可大于数组/矩阵的维度,且axis的不同取值会产生不同的结果。
先以2×2的二维矩阵为例:

>>> np.sum([[0, 1], [0, 5]], axis=0)
array([0, 6])
>>> np.sum([[0, 1], [0, 5]], axis=1)
array([1, 5])
1

在上述例子中
当axis为0时,是压缩行,即将每一列的元素相加,将矩阵压缩为一行
当axis为1时,是压缩列,即将每一行的元素相加,将矩阵压缩为一列
具体理解如图:

当axis取负数的时候,对于二维矩阵,只能取-1和-2(不可超过矩阵的维度)。
当axis=-1时,相当于axis=1的效果,当axis=-2时,相当于axis=0的效果。

如果axis为整数元组(x,y),则是求出axis=x和axis=y情况下得到的和。
继续以上面的2×2矩阵为例

>>>np.sum([[1,2,3],[3,4,5]],axis=(0,1))
>>>6
>>>np.sum([[1,2,3],[3,4,5]],axis=(1,0))
>>>6
>>>np.sum([[[1,2],[3,4]],[[2,3],[4,5]]],axis = (0,1))
>>>[10,14]
>>>np.sum([[[1,2],[3,4]],[[2,3],[4,5]]],axis = (0,1,2))
>>>24

另外,需要注意的是:如果要输入两个数组/矩阵/向量进行相加,那么就要先把两个数组/矩阵/向量用一个括号括起来,形成一个元组,这样才能够进行相加。因为numpy.sum的运算实现本质是通过矩阵内部的运算实现的。

当然,如果只是向量/数组之间做加法运算,可以直接让两个向量/数组相加,但前提是它们必须为numpy的array数组才可以,否则只是单纯的列表相加

>>>v1 = [1, 2]
>>>v2 = [3, 4]
>>>v1 + v2
[1, 2, 3, 4]

>>>v1 = numpy.array[1, 2]
>>>v2 = numpy.array[3, 4]
>>>v1 + v2
[4, 6]
  • 16
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值