当前位置: 首页 > article >正文

【五分钟】熟练使用numpy.cumsum()函数(干货!!!)

引言

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阅读体验~


http://www.kler.cn/a/157302.html

相关文章:

  • 读数据质量管理:数据可靠性与数据质量问题解决之道03数据目录
  • 《深度解析 C++中的弱引用(weak reference):打破循环依赖的利器》
  • Linux 进程线程间通信总结
  • Unity3D 包体裁剪与优化详解
  • Django博客网站上线前准备事项
  • LeetCode【0027】移除元素
  • 接口压测指南
  • Spring IOC—基于XML配置和管理Bean 万字详解(通俗易懂)
  • iOS ------ UICollectionView
  • Python —— Mock接口测试
  • ElasticSearch知识体系详解
  • 解码 SQL:深入探索 Antlr4 语法解析器背后的奥秘
  • Web前端 ---- 【vue】vue 组件传值(props、全局事件总线、消息的订阅与发布)
  • 10个顶级Linux开源反向代理服务器 - 解析与导航
  • 字节内部自动化测试教程:python+pytest接口自动化-接口测试一般流程及方法
  • CoreDNS实战(一)-构建高性能、插件化的DNS服务器
  • Azure Machine Learning - 使用 REST API 创建 Azure AI 搜索索引
  • 【云备份】项目介绍
  • SoC with CPLD and MCU ?
  • ODN光纤链路全程衰减如何计算
  • d3dx9_43.dll丢失原因以及5个解决方法详解
  • Ubuntu18.04安装Ipopt-3.12.8流程
  • MFC发送ZPL指令控制斑马打印机
  • 代码随想录day5 哈希表part 01 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
  • 【FMC141】基于VITA57.4标准的4通道2.8GSPS 16位DA播放子卡(2片DAC39J84)
  • 股票代码合法验证:python字符串str应用