iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >聊聊prod()与cumprod()区别cumsum()
  • 407
分享到

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

2024-04-02 19:04:59 407人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

pandas.Series.cumprod 官方文档 cumprod()累积连乘 Series.cumprod(axis=None, skipna=True, *args, **

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函数到底在干嘛呀~

--结束END--

本文标题: 聊聊prod()与cumprod()区别cumsum()

本文链接: https://www.lsjlt.com/news/126249.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 聊聊prod()与cumprod()区别cumsum()
    pandas.Series.cumprod 官方文档 cumprod()累积连乘 Series.cumprod(axis=None, skipna=True, *args, **...
    99+
    2024-04-02
  • 聊聊uniapp与h5区别
    随着移动互联网的发展,越来越多的企业开始投入到移动应用的开发中。在移动应用开发中,uniapp和h5是两种流行的选择。虽然它们都是以HTML、JavaScript、CSS为基础的技术,但是在实现的方式、性能以及用户体验方面存在一些差别。这篇...
    99+
    2023-05-14
  • 聊聊Pytorch torch.cat与torch.stack的区别
    torch.cat()函数可以将多个张量拼接成一个张量。torch.cat()有两个参数,第一个是要拼接的张量的列表或是元组;第二个参数是拼接的维度。 torch.cat()的示例如...
    99+
    2024-04-02
  • 聊聊github svn区别
    随着技术的发展,不仅是大型软件公司,越来越多的个人开发者也开始使用版本控制工具来管理他们的代码。在这些版本控制工具中,应该最著名的就是GitHub和SVN了。GitHub和SVN都是版本控制工具,它们的目的都是为了防止代码丢失和管理代码变更...
    99+
    2023-10-22
  • 聊聊Python与Golang的区别有哪些
    Python是一种高级编程语言,它被广泛用于数据科学、计算机科学、人工智能和互联网开发等领域。而Golang是一种新型的编程语言,也被称为Go,由Google开发,它的设计目的是为了在多核和网络环境下提供更好的性能和可伸缩性。语言设计Pyt...
    99+
    2023-05-14
  • 聊聊docker中容器与镜像的区别
    什么是镜像? 镜像可以看成是由多个镜像层叠加起来的一个文件系统(通过UnionFS与AUFS文件联合系统实现),镜像层也可以简单理解为一个基本的镜像,而每个镜像层之间通过指...
    99+
    2024-04-02
  • 详细聊聊TypeScript中unknown与any的区别
    目录前言1. unknown vs any2. unknown 和 any 的心智模式3.总结总结前言 我们知道 any 类型的变量可以被赋给任何值。 let myVar: a...
    99+
    2024-04-02
  • 聊聊git和github的区别
    Git是一种分布式版本控制系统,它能够记录代码的变化并帮助开发者管理版本的历史记录。Git的创建者是Linus Torvalds,它于2005年发布并在开源社区中推广,现在已成为开发者们最常用的版本控制工具之一。GitHub则是一个在线代码...
    99+
    2023-10-22
  • 聊聊SpringCloud和SpringCloudAlibaba的区别
    目录SpringCloud和SpringCloudAlibaba的区别SpringCloud Alibaba与Spring Cloud搭配方案开源地址SpringCloud几大痛点S...
    99+
    2024-04-02
  • 聊聊Vuex与Pinia在设计与实现上的区别
    Vue 状态管理首先,先介绍一下 Vue 框架自身提供的状态管理的方式。【相关推荐:vuejs视频教程、web前端开发】Vue 组件内主要涉及到状态、动作和视图三个组成部分。在选项式 API 中通过 data 方法返回一个状态对象,通过 m...
    99+
    2023-05-14
    Vuex Vue.js React.js
  • 一文聊聊go和golang区别
    Go(又称Golang)是一门由谷歌开发的编程语言,由于其高效、简单和安全等特点,近年来在开发领域广受欢迎。然而,有些人会困惑,Go和Golang之间到底有什么区别呢?在本文中,我们将详细介绍这两者之间的异同。Go和Golang连同其它语言...
    99+
    2023-05-14
    Golang
  • 聊聊@RequestMapping和@GetMapping @PostMapping的区别
    @RequestMapping和@GetMapping @PostMapping的区别 最近学习看一些代码,发现对于发送请求这件事,有的地方用@RequestMapping,有的地方...
    99+
    2024-04-02
  • 聊聊BeanUtils.copyProperties和clone()方法的区别
    目录首先,BeanUtils有两种:效率:需要在pom文件中引入这个包在pom文件里面引入所需要的包新建一个实体类StudentEntity实现Cloneable接口测试方法最近撸代...
    99+
    2024-04-02
  • 聊聊Numpy.array中[:]和[::]的区别在哪
    [:]和[::]的区别蛮大的,用的好可以节省时间,下面以实例进行分析 array([:]) >>> import numpy as np >>>...
    99+
    2024-04-02
  • 聊聊php和asp区别有哪些
    PHP和ASP是两种常用的网站开发语言,它们在很多方面都有类似之处,但又存在一些本质上的差异。本文将介绍PHP和ASP的区别,包括它们的历史背景、语言特点、适用范围等,以帮助读者选择最适合自己项目的编程语言。一、历史背景ASP源于微软公司,...
    99+
    2023-05-14
  • 聊聊JavaScript和php的区别有哪些
    JavaScript和PHP是两种不同的编程语言,它们各自有着自己的特点和用途。虽然它们都可以用于Web开发,但是它们的差异还是很大的。下面将详细介绍JavaScript和PHP之间的区别。语言类型JavaScript是一种客户端脚本语言,...
    99+
    2023-05-14
  • 聊聊python dropna()和notnull()的用法区别
    `dropna()`和`notnull()`是pandas库中用于处理缺失值的函数,它们的用法和功能有一些区别。`dropna()`...
    99+
    2023-08-16
    python
  • 聊聊注解@controller@service@component@repository的区别
    目录注解@controller@service@component@repository的区别命名不一样主要是为了区分类的作用和所属层级:Spring中的主要注解1.组件类注解@Co...
    99+
    2024-04-02
  • 聊聊Kotlin 中 lateinit 和 lazy 的原理区别
    目录lateinit用法原理lazy用法原理the endreferences使用 Kotlin 进行开发,对于 latelinit 和 lazy 肯定不陌生。但其原理上的区别,可能...
    99+
    2024-04-02
  • 聊聊码云和gitee的区别是什么
    码云和gitee是当前国内最受欢迎的两个代码托管平台,二者许多人会认为他们是一样的,但实际上,它们在某些功能和用法方面还是存在一些差异的。下面,我们就来探讨一下码云和gitee的几个不同之处。管理者背景首先,码云和gitee的背景不同。码云...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作