prod()与cumprod()用法分别是什么,有何不同
Admin 2022-07-22 群英技术资讯 984 次浏览
这篇文章主要介绍“prod()与cumprod()用法分别是什么,有何不同”,有一些人在prod()与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()累积连加
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(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函数到底在干嘛?
本人是一名python小白,最近过完了python的基本知识后,在看《利用python进行数据分析》这本书,书中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轴”画图时忘了标注):

这里还要补充说一下:红色的数字只是因为我用的iPad画图很不方便所以没改成黑色,忽略就好
cumsum作用:计算轴向元素累加和,返回由中间结果组成的数组
这句概念中我认为大家理解起来比较难受的地方应该是轴向元素累加。
首先,通过前文对轴概念的理解我们可以知道
axis=0代表着最外层的维度也就是0轴(这里可能说法不太正确,主要为了配合上节图片),所以就是0轴的累加计算,我们以前文用到的数组为例(红色虚线表示按照0轴进行累加):
step1:
沿着0轴进行累加

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

代码:
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轴进行累加(也就是2 * 2 * 4中的第二个2),这里为了方便讲解我将数组的摆放位置换了一下,不影响哈~
step1:
红色虚线代表我们现在应该沿着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]]])
都已经讲到沿着轴2进行累加了,废话就不多说了直接放图,大家看看有没有做对吧
step1:
老规矩:红色虚线表示沿着2轴进行累加,所以应该是1,2,3,4进行累加,5,6,7,8进行累加,依次类推

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]]])
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
fotmat作为Python的的格式字符串函数,主要通过字符串中的花括号{},来识别替换字段,从而完成字符串的格式化,下面这篇文章主要给大家介绍了关于python中format用法的相关资料,需要的朋友可以参考下
关键字nonlocal在Python 2 x中,闭包只能读外部函数的变量,而不能改写它。为了解决这个问题,Python 3 x引入了nonlocal关键字,在闭包内
GUI(图形用户界面),顾名思义就是用图形的方式,来显示计算机操作的界面,更加方便且直观。本文将用一行代码实现GUI界面的制作,需要的可以参考一下
在本文中,云朵君将和大家一起了解装饰器的工作原理,如何将我们之前定义的定时器类 Timer 扩展为装饰器,以及如何简化计时功能,感兴趣的可以了解一下
这篇文章主要介绍了Python使用ClickHouse的实践与踩坑记录,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008