python numpy中cumsum的用法详解


Posted in Python onOctober 17, 2019

Cumsum :计算轴向元素累加和,返回由中间结果组成的数组

重点就是返回值是“由中间结果组成的数组”

以下代码在python3.6版本运行成功!

下面看代码,定义一个2*2*3的数组,所以其shape是2,2,3,索引分别0,1,2

shape 索引
2 0
2 1
3 2

代码:

import numpy as np
arr = np.array([[[1,2,3],[8,9,12]],[[1,2,4],[2,4,5]]]) #2*2*3
print(arr.cumsum(0))
print(arr.cumsum(1))
print(arr.cumsum(2))

输出结果:

#cumsum(0)
[[[ 1  2  3]
  [ 8  9 12]]
 
 [[ 2  4  7]
  [10 13 17]]]
#cumsum(1)
[[[ 1  2  3]
  [ 9 11 15]]
 
 [[ 1  2  4]
  [ 3  6  9]]]
#cumsum(2)
[[[ 1  3  6]
  [ 8 17 29]]
 
 [[ 1  3  7]
  [ 2  6 11]]]

注释:

  • arr是一个2*2*3三维矩阵,索引值为0,1,2
  • cumsum(0):实现0轴上的累加:以最外面的数组元素为单位,以[[1,2,3],[8,9,12]]为开始实现后面元素的对应累加
  • cumsum(1):实现1轴上的累加:以中间数组元素为单位,以[1,2,3]为开始,实现后面元素的对应累加
  • cumsum(2):实现2轴上的累加:以最里面的元素为累加单位,即1为开始,实现后面的元素累加

四维数组实现

下面看一个四维数组2*2*2*4,索引值为0,1,2,3
代码:

import numpy as np
arr = np.arange(32).reshape((2,2,2,4))
print(arr)
print(arr.cumsum(0))
print(arr.cumsum(1))
print(arr.cumsum(2))
print(arr.cumsum(3))
arr:
[[[[ 0 1 2 3]
  [ 4 5 6 7]]
 
 [[ 8 9 10 11]
  [12 13 14 15]]]
 
 
 [[[16 17 18 19]
  [20 21 22 23]]
 
 [[24 25 26 27]
  [28 29 30 31]]]]

arr是一个2*2*2*4四维矩阵,索引值为0,1,2,3

cumsum(0):实现0轴上的累加即:以最外面数组元素为单位即

[[[ 0 1 2 3]
  [ 4 5 6 7]]
 
 [[ 8 9 10 11]
  [12 13 14 15]]]


[[[16 17 18 19]
  [20 21 22 23]]
 
 [[24 25 26 27]
  [28 29 30 31]]]]

对应位置元素相加起来

结果:

[[[[ 0 1 2 3]
  [ 4 5 6 7]]
 
 [[ 8 9 10 11]
  [12 13 14 15]]]
 
 
 [[[16 18 20 22]
  [24 26 28 30]]
 
 [[32 34 36 38]
  [40 42 44 46]]]]

cumsum(1):实现1轴上的累加即:以次外面元素为单位,累加:

[[ 0 1 2 3]
  [ 4 5 6 7]]


[[ 8 9 10 11]
  [12 13 14 15]]


[[16 17 18 19]
  [20 21 22 23]]


[[24 25 26 27]
  [28 29 30 31]]

累计过程产生的中间结果要记录到数组中

所以,结果:

[[[[ 0 1 2 3]
  [ 4 5 6 7]]
 
 [[ 8 10 12 14]     
  [16 18 20 22]]]
 
 
 [[[16 17 18 19]
  [20 21 22 23]]
 
 [[40 42 44 46]
  [48 50 52 54]]]]

cumsum(2)就对应从[ 0  1  2  3]数组元素开始实现累加,然后记录中间结果

cumsum(3)对应的是从最里面最小的数组元素,即从0开始实现累加,记录中间结果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python调用java的Webservice示例
Mar 10 Python
简单实现python爬虫功能
Dec 31 Python
python爬虫_实现校园网自动重连脚本的教程
Apr 22 Python
PyQt5实现拖放功能
Apr 25 Python
从请求到响应过程中django都做了哪些处理
Aug 01 Python
Python实现CNN的多通道输入实例
Jan 17 Python
如何基于pythonnet调用halcon脚本
Jan 20 Python
Python matplotlib修改默认字体的操作
Mar 05 Python
python 装饰器功能与用法案例详解
Mar 06 Python
在Tensorflow中实现leakyRelu操作详解(高效)
Jun 30 Python
python操作redis数据库的三种方法
Sep 10 Python
Django通过设置CORS解决跨域问题
Nov 26 Python
python hashlib加密实现代码
Oct 17 #Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
Oct 17 #Python
python模块常用用法实例详解
Oct 17 #Python
Python 使用元类type创建类对象常见应用详解
Oct 17 #Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
Oct 17 #Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
Oct 17 #Python
Python 3.8正式发布重要新功能一览
Oct 17 #Python
You might like
PHP中的串行化变量和序列化对象
2006/09/05 PHP
PHP中include()与require()的区别说明
2010/03/10 PHP
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
2010/07/04 PHP
php 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
控制打印时页眉角的代码
2007/02/08 Javascript
JS 文件传参及处理技巧分析
2010/05/13 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
jquery插件开发之实现jquery手风琴功能分享
2014/03/10 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
jQuery实现的多滑动门,多选项卡效果代码
2016/03/28 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
2019/09/26 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
Python文件和目录操作详解
2015/02/08 Python
Python模拟登录验证码(代码简单)
2016/02/06 Python
python事件驱动event实现详解
2018/11/21 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
python中metaclass原理与用法详解
2019/06/25 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
2020/02/13 Python
python获取栅格点和面值的实现
2020/03/10 Python
最新pycharm安装教程
2020/11/18 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
Hush Puppies澳大利亚官网:舒适的男女休闲和正装鞋
2019/08/24 全球购物
怎样比较两个类型为String的字符串
2016/08/17 面试题
什么是网络协议
2016/04/07 面试题
电子商务毕业生求职信
2013/11/10 职场文书
全陪导游欢迎词
2014/01/17 职场文书
yy婚礼司仪主持词
2014/03/14 职场文书
小学优秀班主任事迹材料
2014/05/17 职场文书
中国梦口号
2014/06/13 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书
springboot+zookeeper实现分布式锁
2022/03/21 Java/Android