sum函数
一. Python内置函数
1.sum函数的结构
sum(iterable [, start])
iterable - 可迭代对象,如:列表,元祖,集合
start - 指定相加的参数,不设置默认为0
计算原理:先求iterable - 可迭代对象内部元素之和(降维),再与start相加
注意:python中,相同数据类型才可以求和运算,否则报错
- sum函数举例
列表求和1:
设置一个单层列表:
list1 = [1,2,3]
求和:
sum(list1)
结果:
6
先对list1内的元素求和,为6,由list型变成int型。再与默认的相同类型start=0相加,结果为6。
列表求和2:
设置一个嵌套列表:
list1 = [[1,2,3]]
求和:
sum(list1)
结果报错:
TypeError: unsupported operand type(s) for +: 'int' and 'list'
首先对list1内的元素求和,由于是双层列表,求和后,还有一层列表,和为[1,2,3],为list型;又因为start默认为0,为int类型,与前面的不同类型 - list类型相加而报错。
列表求和3:
列表降维:
设置一个嵌套列表:
list1 = [[1,2,3],[5,6]]
可更改start值类型为list,此时实现了一个功能 - 降维:
sum(list1, [])
结果:
[1,2,3,5,6]
首先内部元素求和:
[1,2,3] + [5,6] = [1,2,3,5,6]
与start相加:
[1,2,3,5,6] + [] = [1,2,3,5,6]
二. NumPy函数
- sum函数的结构
np.sum(a, axis=None, dtype=None, out=None,keepdims=,initial=)
a - 序列
axis - 设置要操作的轴。可为负数,则从结尾开始
dtype - 设置类型
keepdims - 默认为False,求和降维;为True时,保持原维度
(简单的接受几个常用的参数,后期有需求再补充)
2.sum函数举例
设置一个shape=(1,2,3)的数组
n1 = np.array([[[1,2,3], [4,5,6]]])
n1:
array([[[1, 2, 3],
[4, 5, 6]]])
求和1:
当axis=None时,即默认时,求所有元素之和
np.sum(n1)
结果:
1+2+3+4+5+6 = 21
求和2:
当axis=0时,求第0轴子层元素之和, 且降维:
np.sum(n1, axis=0)
结果, 三维变二维:
[[1,2,3],[4,5,6]]
求和3:
当axis=0时,求第1轴子元素之和,保持维度:
np.sum(n1, axis=1, keepdims=True)
结果,三维保持不变:
[[[1+4, 2+5, 3+6]]] = [[[5,7,9]]]
参考资料
如何用sum()函数给列表降维?