cumsum函数定义:
- cumsum(a, axis=None, dtype=None, out=None)
- a.cumsum(axis=None, dtype=None, out=None)
返回:沿着指定轴的元素累加和所组成的数组,其形状应与输入数组a一致
其中cumsum函数的参数:
- a:数组
- axis:轴索引,整型,若a为n维数组,则axis的取值范围为[0,n-1]
- dtype:返回结果的数据类型,若不指定,则默认与a一致。
- out:数据类型为数组。用来放置结果的替代输出数组,它必须具有与输出结果具有相同的形状和缓冲长度
代码示例:
1.对于一维数组而言:
import numpy as np arr=np.array([1,2,3,4,5,6,7,8,9]) result=arr.cumsum() #此时axis只能取0,因此,axis=0可不写 #result: array([ 1, 3, 6, 10, 15, 21, 28, 36, 45], dtype=int32)
输出结果的数组result[i]的结果为sum(arr[:i+1])。
2.对于二维数组而言
import numpy as np arr=np.array([[1,2,3],[4,5,6],[7,8,9]]) #沿着axis=0轴计算 result1=arr.cumsum(0) #array([[ 1, 2, 3],[ 5, 7, 9],[12, 15, 18]], dtype=int32) #沿着axis=1轴计算 result2=arr.cumsum(1) #array([[ 1, 3, 6],[ 4, 9, 15],[ 7, 15, 24]], dtype=int32) #arr.cumsum()并不是arr.cumsum(0)和arr.cumsum(1)的并集,而是将arr重塑为一维数组后的,再计算cumsum()的结果 arr.cumsum()#array([ 1, 3, 6, 10, 15, 21, 28, 36, 45], dtype=int32)输出结果的数组result1[i][j]的结果为sum(arr[:i+1,j]);
输出结果的数组result2[i][j]的结果为sum(arr[i,:j+1])。
3.对于n维数组而言,以3 维举例:
arr=np.array([[[1,2],[3,4]],[[5,6],[7,8]]]) result1=arr.cumsum(0) #array([[[ 1, 2],[ 3, 4]],[[ 6, 8],[10, 12]]], dtype=int32) result2=arr.cumsum(1) #array([[[ 1, 2],[ 4, 6]],[[ 5, 6],[12, 14]]], dtype=int32) result3=arr.cumsum(2) #array([[[ 1, 3],[ 3, 7]],[[ 5, 11],[ 7, 15]]], dtype=int32)
输出结果的数组result1[i][j][k]的结果为sum(arr[:i+1,j,k]);
输出结果的数组result2[i][j][k]的结果为sum(arr[i,:j+1,k]);
输出结果的数组result3[i][j][k]的结果为sum(arr[i,j,:k+1])。
n维数组(n>3)的以此类推。
tile函数定义:
- tile(A, reps)
返回一个数组,该数组是通过复制A reps次获得。
tile参数说明:
- A:输入数组
- reps:一个元组,代表沿各个轴重复A的次数。ps:A的顺序并不是单纯的按照axis增大或减小的顺序。
代码示例:
#输入一维数组 a = np.array([0, 1, 2]) #沿axis=1方向上复制2次,默认#沿axis=0方向上复制1次 np.tile(a, 2) #array([0, 1, 2, 0, 1, 2]) #沿axis=0方向上复制2次,#沿axis=1方向上复制1次 np.tile(a, (2, 1)) # array([[0, 1, 2],[0, 1, 2]]) ##沿axis=2方向上复制2次,沿axis=0方向上复制1次,沿axis=1方向上复制3次, np.tile(a, (2, 1, 3)) #array([[[0, 1, 2, 0, 1, 2, 0, 1, 2]],[[0, 1, 2, 0, 1, 2, 0, 1, 2]]]) #输入二维数组 b = np.array([[1, 2], [3, 4]]) #沿axis=1方向上复制2次,默认#沿axis=0方向上复制1次 np.tile(b, 2) #array([[1, 2, 1, 2],[3, 4, 3, 4]]) #沿axis=0方向上复制2次,#沿axis=1方向上复制1次 np.tile(b, (2, 1)) #array([[1, 2],[3, 4],[1, 2],[3, 4]])