np.sum()和cumsum()
2019-08-04 本文已影响0人
青吟乐
1,np.sum()函数
不传参数就是所有元素的和,这里不讨论,这里讨论的是有axis参数的情况
先给一个矩阵
import numpy as np
a = np.array([[[1,2,3,2],[1,2,3,1],[2,3,4,1]],[[1,0,2,0],[2,1,2,0],[2,1,1,1]]])
输出一下:
array([[[1, 2, 3, 2],
[1, 2, 3, 1],
[2, 3, 4, 1]],
[[1, 0, 2, 0],
[2, 1, 2, 0],
[2, 1, 1, 1]]])
首先 这是个三维矩阵,所以这里axis有三种情况 0,1,2
1,axis=0
a.sum(axis=0)
这个比较简单,先看结果
array([[2, 2, 5, 2],
[3, 3, 5, 1],
[4, 4, 5, 2]])
解释 :a[0][m][n]+a[1][m][n]得到结果
2,axis=1
a.sum(axis=1)
先看结果
array([[ 4, 7, 10, 4],
[ 5, 2, 5, 1]])
解释:
a[m][n][x]+a[m][n]][x+1]+a[m][n][x+2]得到结果
可以理解为把最外面的维度,也就是0维度去掉,再求axis=0的情况,也就是两个独立的3*4矩阵求sum,每行的对应位置求和
3,axis=2
先看结果
a.sum(axis=2)
array([[ 8, 7, 10],
[ 3, 5, 5]])
解释:最内维度各数相加
这个就不再过多解释了
2,cunsum()函数
一维:从第一个元素开始向后逐次相加
import numpy as np
a=[1,2,3,4,5,6,7]
print(np.cumsum(a))
结果
array([ 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 75, 105])
二维:
有参数 axis=0和axis=1的时候 axis=0的时候是第一行开始依次向下求和
axis=1的时候是第一列一次向右求和
>>>import numpy as np
>>> c=[[1,2,3],[4,5,6],[7,8,9]]
>>> np.cumsum(c,axis=0)
array([[ 1, 2, 3],
[ 5, 7, 9],
[12, 15, 18]])
>>> np.cumsum(c,axis=1)
array([[ 1, 3, 6],
[ 4, 9, 15],
[ 7, 15, 24]])
3,三维,有axis=0/1/2的情况
axis=0:最外层包着的维度进行向下求和
axis=1:倒数第二层的维度包着的维度向下求和
axis=2:最内层维度依次向后求和
请看示例
>>>import numpy as np
>>> a
[[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 20, 30]]]
>>> np.cumsum(a,axis=0)
array([[[ 1, 2, 3],
[ 4, 5, 6]],
[[ 8, 10, 12],
[14, 25, 36]]])
>>> np.cumsum(a,axis=1)
array([[[ 1, 2, 3],
[ 5, 7, 9]],
[[ 7, 8, 9],
[17, 28, 39]]])
>>> np.cumsum(a,axis=2)
array([[[ 1, 3, 6],
[ 4, 9, 15]],
[[ 7, 15, 24],
[10, 30, 60]]])
结束