我的编程空间,编程开发者的网络收藏夹
学习永远不晚

聊聊prod()与cumprod()区别cumsum()

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

聊聊prod()与cumprod()区别cumsum()

pandas.Series.cumprod 官方文档

cumprod()累积连乘


Series.cumprod(axis=None, skipna=True, *args, **kwargs)
#实现功能:Return cumulative product over a DataFrame or Series axis.
#实现功能:Returns a DataFrame or Series of the same size containing the cumulative product.
#return:scalar or Series

cumsum()累积连加

pandas.Series.prod官方文档



Series.prod(axis=None, skipna=None, level=None, numeric_only=None, min_count=0, **kwargs)
# 实现功能:Return the product of the values for the requested axis.
# return:scalar or Series

优点没看明白,因为常规情况下,所用的.prod()并非pandas下的函数,而是numpy下的函数。

numpy.prod官方文档


numpy.prod(a, axis=None, dtype=None, out=None, keepdims=<class numpy._globals._NoValue>)
# 实现功能:Return the product of array elements over a given axis.
# return:product_along_axis : ndarray

返回给定轴上数组元素的乘积。

跟cumprod不同,cumprod是计算当前一个累积乘上前面所有的数据,更多是一个list;prod返回的是给定这个轴上最终一个值。

补充:【python初学者】简单易懂的图解:np.cumsum和np.cumprod函数到底在干嘛?

1.np.cumsum

本人是一名python小白,最近过完了python的基本知识后,在看《利用python进行数据分析》这本书,书中cumsum函数一笔带过留下本小白“懵逼树下你和我”,当然是我自己的问题不是书的问题,经过画图理解后渐渐明白了这个函数到底在干么。

1.1np.cumsum-轴的概念

首先,在学习cumsum函数之前我们应该先明白什么是轴,以下面代码来进行说明:


arr=np.arange(1,17,1).reshape((2,2,4))
arr

array([[[ 1,  2,  3,  4],
        [ 5,  6,  7,  8]],

       [[ 9, 10, 11, 12],
        [13, 14, 15, 16]]])

其实数组的轴(axis)就是数组的维度,上面的代码生成了一个224的数组,所以

1、这个数组的0轴为2 ,axis=0

2、这个数组的1轴为2 ,axis=1

3、这个数组的2轴为4 ,axis=2

该数组如图所示(蓝,橙,黄,绿都是2轴,橙和绿上的“2轴”画图时忘了标注):

3维数组

这里还要补充说一下:红色的数字只是因为我用的iPad画图很不方便所以没改成黑色,忽略就好

1.2cumsum(axis=0)

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

这句概念中我认为大家理解起来比较难受的地方应该是轴向元素累加。

首先,通过前文对轴概念的理解我们可以知道

axis=0代表着最外层的维度也就是0轴(这里可能说法不太正确,主要为了配合上节图片),所以就是0轴的累加计算,我们以前文用到的数组为例(红色虚线表示按照0轴进行累加):

step1:

沿着0轴进行累加

0轴累加

step2:

将[1,2,3,4]和[9,10,11,12]进行累加,将[5,6,7,8]和[13,14,15,16]

0轴累加结果

代码:


arr=np.array([[[ 1,  2,  3,  4],
               [ 5,  6,  7,  8]],
              [[ 9, 10, 11, 12],
               [13, 14, 15, 16]]])
arr.cumsum(axis=0)

结果为:


array([[[ 1,  2,  3,  4],
        [ 5,  6,  7,  8]],

       [[10, 12, 14, 16],
        [18, 20, 22, 24]]])

1.3cumsum(axis=1)

这里我们还是以之前举例的数组为例,沿着1轴进行累加(也就是2 * 2 * 4中的第二个2),这里为了方便讲解我将数组的摆放位置换了一下,不影响哈~

step1:

红色虚线代表我们现在应该沿着1轴进行累加啦!

1轴累加

step2:

既然沿着1轴进行累加,我们是不是就应该在1轴内部进行累加呢?

所以就应该[1,2,3,4]和[5,6,7,8]进行累加,[9,10,11,12]和[13,14,15,16]进行累加

在这里插入图片描述

代码结果:


arr.cumsum(axis=1)
#运行结果
array([[[ 1,  2,  3,  4],
        [ 6,  8, 10, 12]],

       [[ 9, 10, 11, 12],
        [22, 24, 26, 28]]])

1.4cumsum(axis=2)

都已经讲到沿着轴2进行累加了,废话就不多说了直接放图,大家看看有没有做对吧

step1:

老规矩:红色虚线表示沿着2轴进行累加,所以应该是1,2,3,4进行累加,5,6,7,8进行累加,依次类推

2轴累加

step2

我们以蓝色这一项为例:

第一项:1第二项:1+2=3第三项:1+2+3=6第四项:1+2+3+4=10

在这里插入图片描述

代码结果:


arr.cumsum(axis=2)
#运行结果
array([[[ 1,  3,  6, 10],
        [ 5, 11, 18, 26]],

       [[ 9, 19, 30, 42],
        [13, 27, 42, 58]]])

讲到这里我相信大家应该能自己摸索出cumprod函数在干嘛啦!本篇文章里面因为需要结合图片进行讲解所以有些句子并不恰当~希望本篇文章能够让你明白cumsum函数到底在干嘛呀~

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

聊聊prod()与cumprod()区别cumsum()

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

聊聊uniapp与h5区别

随着移动互联网的发展,越来越多的企业开始投入到移动应用的开发中。在移动应用开发中,uniapp和h5是两种流行的选择。虽然它们都是以HTML、JavaScript、CSS为基础的技术,但是在实现的方式、性能以及用户体验方面存在一些差别。这篇文章将介绍uniapp和h5的区别,帮助读者更好地选择用于自己的开发项目。一、uniapp的概述uniapp是一种跨平台应用程序开发框架,它
2023-05-14

聊聊github svn区别

随着技术的发展,不仅是大型软件公司,越来越多的个人开发者也开始使用版本控制工具来管理他们的代码。在这些版本控制工具中,应该最著名的就是GitHub和SVN了。GitHub和SVN都是版本控制工具,它们的目的都是为了防止代码丢失和管理代码变更
2023-10-22

聊聊python中not 与 is None的区别

原因: list 获得的数据为空: 显示值为 [ ]不同的判断--- is None----not两者结果不一样分析:总之: not 判断的是内容,而is None则涉及到这个 list 或 dict 是否声明并定义 补充:关于Python
2022-06-02

聊聊git和github的区别

Git是一种分布式版本控制系统,它能够记录代码的变化并帮助开发者管理版本的历史记录。Git的创建者是Linus Torvalds,它于2005年发布并在开源社区中推广,现在已成为开发者们最常用的版本控制工具之一。GitHub则是一个在线代码
2023-10-22

聊聊Vuex与Pinia在设计与实现上的区别

在进行前端项目开发时,状态管理始终是一个绕不开的话题,Vue 与 React 框架本身提供了一部分能力去解决这个问题。但是在开发大型应用时往往有其他考虑,比如需要更规范更完善的操作日志、集成在开发者工具中的时间旅行能力、服务端渲染等。本文以 Vue 框架为例,介绍 Vuex 与 Pinia 这两种状态管理工具在设计与实现上的区别。
2023-05-14

聊聊Python中end=和sep=的区别

end: 默认是换行,表示两个字符串最后以什么结尾。 eg: 换行 end="\n" sep: 默认是空格,表示两个字符串之间用什么分割。 eg: 空格 sep=" "补充:python 中的 print(x, end=) 和 print(
2022-06-02

聊聊python dropna()和notnull()的用法区别

`dropna()`和`notnull()`是pandas库中用于处理缺失值的函数,它们的用法和功能有一些区别。`dropna()`是pandas库中DataFrame和Series对象的一个方法,用于删除含有缺失值的行或列。它的主要功能是
2023-08-16

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录