精华内容
下载资源
问答
  • cumsum
    千次阅读
    2021-03-17 15:27:03

    这个函数的功能是返回给定axis上的累计和

    函数的原型如下:详见doc

    numpy.cumsum(a, axis=None, dtype=None, out=None)

    Return the cumulative sum of the elements along a given axis.

    官方的文档是没有详细解释,本人做了测试自己把理解的写下。

    1.对于一维输入a(可以是list,可以是array,假设a=[1, 2, 3, 4, 5, 6, 7] ,就是当前列之前的和加到当前列上,如下:

    >>>import numpy as np

    >>> b=[1,2,3,4,5,6,7]

    >>> np.cumsum(a)

    array([ 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 75, 105])

    2.对于二维输入a,axis可以是0(第一行不动,其他行累加), 1(第一列列不动,其他列累加),如下:

    >>>import numpy as np

    >>> c=[[1,2,3],[4,5,6],[7,8,9]]

    >>> np.cumsum(c,axis=0)

    array([[ 1, 2, 3],

    [ 5, 7, 9],

    [12, 15, 18]])

    >>> np.cumsum(c,axis=1)

    array([[ 1, 3, 6],

    [ 4, 9, 15],

    [ 7, 15, 24]])

    3.对于三维输入a, axis可以是 0(第0维不动,其他维累加), 1(第1维不动,其他维累加), 2(第2维不动,其他维累加),注意维数从外到内是0-2编号,如下:

    >>>import numpy as np

    >>> a

    [[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 20, 30]]]

    >>> np.cumsum(a,axis=0)

    array([[[ 1, 2, 3],

    [ 4, 5, 6]],

    [[ 8, 10, 12],

    [14, 25, 36]]])

    >>> np.cumsum(a,axis=1)

    array([[[ 1, 2, 3],

    [ 5, 7, 9]],

    [[ 7, 8, 9],

    [17, 28, 39]]])

    >>> np.cumsum(a,axis=2)

    array([[[ 1, 3, 6],

    [ 4, 9, 15]],

    [[ 7, 15, 24],

    [10, 30, 60]]])

    a是一个 2 x 2 x 3 的 list,解释起来有点麻烦,先把 a 变种风格

    a=[ //axis=0

    [//axis=1

    [1, 2, 3],//axis=2

    [4, 5, 6] //axis=2

    ],

    [//axis=1

    [7, 8, 9],//axis=2

    [10, 20, 30] //axis=2

    ],

    ]

    axis=0说明,以对外层的第0行(也就是由1,2,3,4,5,6组成的list)不动,累加到其他行,注意是累加,累加,累加。重要事说三遍

    axis=1说明,第2维度的第0行不变,以就是 [1,2,3]和[7,8,9]不动,累加到其他行

    axis=2说明,第3维度,也是最内层,此时是第0列保持不变,见蓝色数字,累加到其他列上,注意只有最内层维度才是列不变

    对于更高维度,可以参考3维来从外向内剥离的方式理解

    参考文献

    cumsum官方doc

    更多相关内容
  • Cumsum :计算轴向元素累加和,返回由中间结果组成的数组 重点就是返回值是“由中间结果组成的数组” 以下代码在python3.6版本运行成功! 下面看代码,定义一个2*2*3的数组,所以其shape是2,2,3,索引分别0,1...
  • 本文主要是针对 cumsum函数的一些用法。具体应用场景看下面的数据集。 第一列是userID,第二列是安装的时间,第三列是安装的次数。 我们现在想做一件事情。就是统计用户在某一天前累计的安装次数。 譬如,对userID...
  • 主要介绍了python cumsum函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 该函数通过允许在任何方向的操作来扩展 Matlab 的内置 cumsum 和 cumtrapz 函数。
  • cumsum

    2018-12-22 15:00:24
    该函数用于累计求和: from numpy.random import randn random(50).cumsum

    该函数用于累计求和:

    from numpy.random import randn
    random(50).cumsum
    

    展开全文
  • torch的cumsum

    2022-05-04 13:51:03
    函数作用:在张量的某个维度上进行累加 从语言描述上比较抽象,看下以下代码加以说明(针对二维张量): import numpy as np ...x_ = x.cumsum(dim=0) x_的结果为: tensor([[1, 2, 3], [5, 7, 9

    函数作用:在张量的某个维度上进行累加
    从语言描述上比较抽象,看下以下代码加以说明(针对二维张量):

    import numpy as np
    
    x = np.array([[1, 2, 3], [4, 5, 6]])
    x = torch.from_numpy(x)
    

    这时x的结果为:

    tensor([[1, 2, 3],
            [4, 5, 6]])
    

    使用cumsum:

    x_ = x.cumsum(dim=0)
    

    x_的结果为:

    tensor([[1, 2, 3],
            [5, 7, 9]])
    

    dim=0时表示在行的维度上进行累加,dim=1表示在列的维度上进行累加:

    x_ = x.cumsum(dim=1)
    

    x_的结果为:

    tensor([[ 1,  3,  6],
            [ 4,  9, 15]])
    
    展开全文
  • Adapting the code of 'Cumsum reset at NaN' to the reset towards 0, is successful: cumsum = v.cumsum().fillna(method='pad') reset = -cumsum[v.isnull() !=0].diff().fillna(cumsum) result = v.where(v.not...

    I'm rather new at python.

    I try to have a cumulative sum for each client to see the consequential months of inactivity (flag: 1 or 0). The cumulative sum of the 1's need therefore to be reset when we have a 0. The reset need to happen as well when we have a new client. See below with example where a is the column of clients and b are the dates.

    After some research, I found the question 'Cumsum reset at NaN' and 'In Python Pandas using cumsum with groupby'. I assume that I kind of need to put them together.

    Adapting the code of 'Cumsum reset at NaN' to the reset towards 0, is successful:

    cumsum = v.cumsum().fillna(method='pad')

    reset = -cumsum[v.isnull() !=0].diff().fillna(cumsum)

    result = v.where(v.notnull(), reset).cumsum()

    However, I don't succeed at adding a groupby. My count just goes on...

    So, a dataset would be like this:

    import pandas as pd

    df = pd.DataFrame({'a' : [1,1,1,1,1,1,1,2,2,2,2,2,2,2],

    'b' : [1/15,2/15,3/15,4/15,5/15,6/15,1/15,2/15,3/15,4/15,5/15,6/15],

    'c' : [1,0,1,0,1,1,0,1,1,0,1,1,1,1]})

    this should result in a dataframe with the columns a, b, c and d with

    'd' : [1,0,1,0,1,2,0,1,2,0,1,2,3,4]

    Please note that I have a very large dataset, so calculation time is really important.

    Thank you for helping me

    解决方案

    Use groupby.apply and cumsum after finding contiguous values in the groups. Then groupby.cumcount to get the integer counting upto each contiguous value and add 1 later.

    Multiply with the original row to create the AND logic cancelling all zeros and only considering positive values.

    df['d'] = df.groupby('a')['c'] \

    .apply(lambda x: x * (x.groupby((x != x.shift()).cumsum()).cumcount() + 1))

    print(df['d'])

    0 1

    1 0

    2 1

    3 0

    4 1

    5 2

    6 0

    7 1

    8 2

    9 0

    10 1

    11 2

    12 3

    13 4

    Name: d, dtype: int64

    Another way of doing would be to apply a function after series.expanding on the groupby object which basically computes values on the series starting from the first index upto that current index.

    Use reduce later to apply function of two args cumulatively to the items of iterable so as to reduce it to a single value.

    from functools import reduce

    df.groupby('a')['c'].expanding() \

    .apply(lambda i: reduce(lambda x, y: x+1 if y==1 else 0, i, 0))

    a

    1 0 1.0

    1 0.0

    2 1.0

    3 0.0

    4 1.0

    5 2.0

    6 0.0

    2 7 1.0

    8 2.0

    9 0.0

    10 1.0

    11 2.0

    12 3.0

    13 4.0

    Name: c, dtype: float64

    Timings:

    %%timeit

    df.groupby('a')['c'].apply(lambda x: x * (x.groupby((x != x.shift()).cumsum()).cumcount() + 1))

    100 loops, best of 3: 3.35 ms per loop

    %%timeit

    df.groupby('a')['c'].expanding().apply(lambda s: reduce(lambda x, y: x+1 if y==1 else 0, s, 0))

    1000 loops, best of 3: 1.63 ms per loop

    展开全文
  • 剖析 | torch.cumsum维度详解

    千次阅读 多人点赞 2021-03-09 13:06:56
    torch.cumsum(input, dim, *, dtype=None, out=None) → Tensor 返回维度dim中输入元素的累计和。【功能:累加】 例如,如果输入是大小为N的向量,则结果也将是大小为N的带有元素的向量。【运算后维度不变】 ...
  • matlab中cumsum函数详解

    千次阅读 2021-04-18 09:15:50
    matlab中cumsum函数通常用于计算一个数组各行的累加值。在matlab的命令窗口中输入doc cumsum或者helpcumsum即可获得该函数的帮助信息。调用格式及说明格式一:B = cumsum(A)这种用法返回数组不同维数的累加和。为了...
  • numpy.cumsum()用法

    2020-12-23 13:06:58
    numpy.cumsum函数参数有numpy.cumsum(a, axis=None, dtype=None, out=None)# (numpy数组,轴参数,输出数组的元素的数据类型,不会用 到的参数)#Return the cumulative sum of the element...
  • 调用格式及说明matlab中cumsum函数通常用于计算一个数组各行的累加值。在matlab的命令窗口中输入doc cumsum或者helpcumsum即可获得该函数的帮助信息。调用格式及说明格式一:B = cumsum(A)这种用法返回数组不同维数...
  • 关于pandas中cumsum函数

    千次阅读 2021-12-28 16:56:00
    关于pandas中cumsum函数 第一步随机生成一个arr数组 import numpy as np arr = np.arange(10).reshape(2,5) arr = pd.DataFrame(arr) arr cumsum(0)实现了数据第一行的数据加到第二行上,并且替换第二行的数据 ...
  • torch.cumsum(input, dim, *, dtype=None, out=None) → Tensor 返回维度dim中输入元素的累计和。【功能:累加】 例如,如果输入是大小为N的向量,则结果也将是大小为N的带有元素的向量。【运算后维度不变】 说明...
  • 老规矩,遇事不决,先查手册,下面是关于 numpy官方手册中关于np.cumsum()的定义与例子: 同时,官方提供了几个例子: >>> a = np.array([[1,2,3], [4,5,6]]) >>> a array([[1, 2, 3], [4, 5, 6...
  • 拒绝踩坑 使用cumsum计算累计求和 首先导入库名 # 导入库名 import pandas as pd import numpy as np import random 生成数据样例 grpArr = np.random.choice(['A','B'], size=[1,10]) monArr = np.random.choice(...
  • 原创|Python|cumsum()

    2020-12-23 13:07:00
    一、参数numpy.cumsum(a, axis=None, dtype=None, out=None)函数的功能是返回给定axis上的累计和二、实例1.一维>>>import numpy as np>>> a=[1,2,3,4,5,6,7]>>> np.cumsum(a)array([ 1, ...
  • numpy的cumsum ()函数

    2021-01-14 13:49:15
    cumsum是matlab中一个函数,通常用于计算一个数组各行的累加值,函数用法是B = cumsum(A,dim),或B = cumsum(A)。函数功能调用格式及说明格式一:B = cumsum(A)这种用法返回数组不同维数的累加和。为了便于接下来的...
  • numpy cumsum函数简介

    2020-12-09 14:24:27
    函数原型:numpy.cumsum(a, axis=None, dtype=None, out=None) 可参考链接:https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.cumsum.html查看各个参数的含义。 函数作用:求数组的所有元素的...
  • pandas中cumsum的用法

    2021-08-25 11:28:06
    看了网上流传的讲解,太多雷同和错误,自己尝试了一下...df['result']=df.groupby['class']['score'].cumsum() 3.结果 4.总结 网上的df['score'].groupby['class']cumsum()写法会报错,应该是新版本的问题吧 ...
  • cumsum 计算前1/2/3/…/n个数的和 cummax 计算前1/2/3/…/n个数的最大值 cummin 计算前1/2/3/…/n个数的最小值 cumprod 计算前1/2/3/…/n个数的积 二、累计统计函数怎么用? 以上这些函数可以对series和...
  • DataFrame.cumsum(self,axis=None,skipna=True,*args,**kwargs)返回DataFrame或Series轴上的累计和。返回包含累计和的相同大小的DataFrame或Series。参数:axis:{0或'index',1或'columns'},默认为0索引或轴的名称...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,947
精华内容 9,178
关键字:

cumsum