引言
numpy.cumsum()函数用于计算输入数组的累积和。当输入是多维数组时,numpy.cumsum()函数可以沿着指定轴计算累积和。
计算一维数组的累计和
代码如下:
# 计算一维数组的累计和
tmp_array = np.ones((4,), dtype=np.uint8) # [1, 1, 1, 1]
print("输入:", tmp_array)
# 方案1 ———— numpy数组的cumsum方法
array_cumsum = tmp_array.cumsum()
print("方案1输出", array_cumsum)
# 方案2 ———— numpy的cumsum函数
array_cumsum = np.cumsum(a=tmp_array)
print("方案2输出:", array_cumsum)
运行结果:
可以看到,当输入是长度为4的全1数组时,方案一和方案二的计算结果完全一致,即输出数组的第i个元素计算的是输入数组的前i项和(累计和)
计算二维数组的累计和(沿着纵轴)
代码如下:
# 沿着纵轴计算二维数组的累计和
tmp_array = np.ones((4,4), dtype=np.uint8)
print("输入:", tmp_array)
# 方案1 ———— numpy数组的cumsum方法
array_cumsum = tmp_array.cumsum(axis=0) # 0代表沿着纵轴
print("方案1输出", array_cumsum)
# 方案2 ———— numpy的cumsum函数
array_cumsum = np.cumsum(a=tmp_array, axis=0)
print("方案2输出", array_cumsum)
运行结果:
可以看到,当输入是形状为(4,4)的全1数组时,方案一和方案二都是沿着输入数组的纵轴去计算累积和。
计算二维数组的累计和(沿着横轴)
# 沿着横轴计算二维数组的累计和
tmp_array = np.ones((4,4), dtype=np.uint8)
print("输入:", tmp_array)
# 方案1 ———— numpy数组的cumsum方法
array_cumsum = tmp_array.cumsum(axis=1) # 1代表沿着横轴
print("方案1输出", array_cumsum)
# 方案2 ———— numpy的cumsum函数
array_cumsum = np.cumsum(a=tmp_array, axis=1)
print("方案2输出", array_cumsum)
运行结果
可以看到,当输入是形状为(4,4)的全1数组时,方案一和方案二都是沿着输入数组的横轴去计算累积和。
计算二维数组的累积和(不指定轴)
代码如下:
tmp_array = np.ones((4,4), dtype=np.uint8)
print("输入:\n", tmp_array)
# 方案1 ———— numpy数组的cumsum方法
array_cumsum = tmp_array.cumsum() # 不指定轴
print("方案1输出:\n", array_cumsum)
# 方案2 ———— numpy的cumsum函数
array_cumsum = np.cumsum(a=tmp_array)
print("方案2输出:\n", array_cumsum)
结果如下:
可以看到,如果在不指定轴的情况下计算二维数组的累积和,相当于先将二维数组按顺序展开成一维数组再计算累计和 ==> 输出结果为一维数组。
小技巧
**疑问:**当函数有axis参数需要指定具体轴时,如何准确记忆axis=0代表沿着纵轴计算,而axis=1代表沿着横轴计算?
小编的回答: 当“纵”和“横”组词时,我们习惯先说“纵”,再说“横”(比如纵横交错)。同时,0和1按数字顺序排列的话也是“0”在前,“1”靠后。—— “纵横”和“01”这种先后顺序可以协助记忆。
结束语
如果本博文对你有所帮助,可以点个赞/收藏支持一下,如果能够持续关注,小编感激不尽~
如果有相关需求/问题需要小编帮助,欢迎私信~
小编会坚持创作,持续优化博文质量,给读者带来更好de阅读体验~