标签: cumsum

矩阵中的累积和

我有一个像矩阵

A= [ 1 2 4
     2 3 1
     3 1 2 ]
Run Code Online (Sandbox Code Playgroud)

我想按行和按列计算累积总和,也就是说,我希望得到结果

B = [ 1  3  7 
      3  8  13 
      6  12 19 ]
Run Code Online (Sandbox Code Playgroud)

有关如何快速在R中制作此内容的任何想法?(可能使用函数cumsum)(我有巨大的矩阵)

谢谢!

arrays performance r matrix cumsum

13
推荐指数
2
解决办法
1万
查看次数

Pandas DataFrame:如何通过连续值进行分组

我在DataFrame中有一个包含值的列:

[1, 1, -1, 1, -1, -1]
Run Code Online (Sandbox Code Playgroud)

我该如何将它们分组呢?

[1,1] [-1] [1] [-1, -1]
Run Code Online (Sandbox Code Playgroud)

python group-by dataframe pandas cumsum

13
推荐指数
3
解决办法
5945
查看次数

到达最大值的累积总和,然后在下一行从零开始重复

我觉得这是一个相当容易的问题,但对于我的生活,我似乎无法找到答案.我有一个相当标准的数据框,我想要做的是将一列值相加,直到它们达到某个值(精确值或大于它),此时它将1放入一个新列(标记为保持)并在0处重新开始求和.

我有一列分钟,分钟,保留列和累积总和列之间的差异(我使用的示例比实际的完整数据集更清晰)

 minutes     difference     keep     difference_sum
 1052991158       0          0            0
 1052991338      180         0            180
 1052991518      180         0            360
 1052991698      180         0            540
 1052991878      180         0            720
 1052992058      180         0            900
 1052992238      180         0            1080
 1052992418      180         0            1260
 1052992598      180         0            1440
 1052992778      180         0            1620
 1052992958      180         0            1800
Run Code Online (Sandbox Code Playgroud)

差值和列用代码计算

caribou.sub$difference_sum<-cumsum(difference)
Run Code Online (Sandbox Code Playgroud)

我想要做的是运行上面的代码,条件是,当求和值达到1470或任何大于它的数字时,它将1放入保留列,然后重新开始求和,并继续在整个数据集中运行.

在此先感谢,如果您需要更多信息,请告诉我们.

艾登

loops if-statement r cumsum

12
推荐指数
2
解决办法
4974
查看次数

如何计算熊猫中前N行的累积总和?

我和熊猫一起工作,但我没有那么多经验.我有以下DataFrame:

          A
0       NaN
1      0.00
2      0.00
3      3.33
4     10.21
5      6.67
6      7.00
7      8.27
8      6.07
9      2.17
10     3.38
11     2.48
12     2.08
13     6.95
14     0.00
15     1.75
16     6.66
17     9.69
18     6.73
19     6.20
20     3.01
21     0.32
22     0.52
Run Code Online (Sandbox Code Playgroud)

我需要计算前11行的累积和.当先前少于11时,假设它们剩余为0.

        B
0     NaN
1    0.00
2    0.00
3    0.00
4    3.33
5    13.54
6    20.21
7    27.20
8    35.47
9    41.54
10    43.72
11   47.09
12   49.57 
13   51.65
14   58.60 …
Run Code Online (Sandbox Code Playgroud)

python pandas cumsum

12
推荐指数
1
解决办法
8988
查看次数

使用pandas数据帧计算累积回报

我有这个数据帧

Poloniex_DOGE_BTC   Poloniex_XMR_BTC    Daily_rets  perc_ret
172 0.006085    -0.000839   0.003309    0
173 0.006229    0.002111    0.005135    0
174 0.000000    -0.001651   0.004203    0
175 0.000000    0.007743    0.005313    0
176 0.000000    -0.001013   -0.003466   0
177 0.000000    -0.000550   0.000772    0
178 0.000000    -0.009864   0.001764    0
Run Code Online (Sandbox Code Playgroud)

我正在尝试在perc_ret中运行total_rets

但是我的代码只是复制daily_rets中的值

df['perc_ret'] = (  df['Daily_rets'] + df['perc_ret'].shift(1) )


Poloniex_DOGE_BTC   Poloniex_XMR_BTC    Daily_rets  perc_ret
172 0.006085    -0.000839   0.003309    NaN
173 0.006229    0.002111    0.005135    0.005135
174 0.000000    -0.001651   0.004203    0.004203
175 0.000000    0.007743    0.005313    0.005313
176 0.000000    -0.001013   -0.003466   -0.003466
177 0.000000 …
Run Code Online (Sandbox Code Playgroud)

python pandas cumsum

11
推荐指数
3
解决办法
1万
查看次数

Scipy Sparse Cumsum

假设我有一个scipy.sparse.csr_matrix代表下面的值

[[0 0 1 2 0 3 0 4]
 [1 0 0 2 0 3 4 0]]
Run Code Online (Sandbox Code Playgroud)

我想计算就地非零值的累积和,这会将数组更改为:

[[0 0 1 3 0 6 0 10]
 [1 0 0 3 0 6 10 0]]
Run Code Online (Sandbox Code Playgroud)

实际值不是1,2,3 ......

每行中的非零值的数量不太可能相同.

怎么这么快?

目前的计划:

import scipy.sparse
import numpy as np

# sparse data
a = scipy.sparse.csr_matrix(
    [[0,0,1,2,0,3,0,4],
     [1,0,0,2,0,3,4,0]], 
    dtype=int)

# method
indptr = a.indptr
data = a.data
for i in range(a.shape[0]):
    st = indptr[i]
    en = indptr[i + 1]
    np.cumsum(data[st:en], out=data[st:en])

# print …
Run Code Online (Sandbox Code Playgroud)

python numpy sum scipy cumsum

11
推荐指数
1
解决办法
469
查看次数

考虑到NaNs的Numpy cumsum

我正在寻找一种简洁的方法:

 a = numpy.array([1,4,1,numpy.nan,2,numpy.nan])
Run Code Online (Sandbox Code Playgroud)

至:

  b = numpy.array([1,5,6,numpy.nan,8,numpy.nan])
Run Code Online (Sandbox Code Playgroud)

我目前能做的最好的事情是:

b = numpy.insert(numpy.cumsum(a[numpy.isfinite(a)]), (numpy.argwhere(numpy.isnan(a)) - numpy.arange(len(numpy.argwhere(numpy.isnan(a))))), numpy.nan)
Run Code Online (Sandbox Code Playgroud)

是否有更短的方法来实现相同的目标?那么沿着2D阵列的轴做一个cumsum呢?

python arrays numpy nan cumsum

10
推荐指数
3
解决办法
2518
查看次数

Identifying positions of the last TRUEs in a sequence of TRUEs and FALSEs

I have a vector of TRUEs and FALSEs:

x <- c(F,F,F,T,T,T,F,F,F,T,T,T,F,T,T)
Run Code Online (Sandbox Code Playgroud)

I'd like to elegantly (and in base) identify the position of the last TRUE before it changes to FALSE.

The following works, though, it seems like it could be simplified:

c((x[-1] != x[-length(x)]),T) & x
> FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE
Run Code Online (Sandbox Code Playgroud)

Input and output: 在此处输入图片说明

logic r vector cumsum

10
推荐指数
3
解决办法
499
查看次数

如何计算在数据框python中的特定值之前出现的次数?

我有一个如下数据框:

A   B   C
1   1   1
2   0   1
3   0   0
4   1   0
5   0   1
6   0   0
7   1   0
Run Code Online (Sandbox Code Playgroud)

我希望在df['B']以下条件下出现零的数量:

if(df['B']<df['C']):
  #count number of zeroes in df['B'] until it sees 1.
Run Code Online (Sandbox Code Playgroud)

预期输出:

A   B   C  output
1   1   1   Nan
2   0   1   1
3   0   0   Nan
4   1   0   Nan
5   0   1   1
6   0   1   0
7   1   0   Nan
Run Code Online (Sandbox Code Playgroud)

我不知道如何计算计数部分。任何帮助都非常感谢

python dataframe pandas cumsum

10
推荐指数
2
解决办法
198
查看次数

每次有 0 时,Python pandas cumsum 都会重置

我有一个包含 0 和 1 的矩阵,并且想要在每列上做一个 cumsum,只要观察到零,它就会重置为 0。例如,如果我们有以下内容:

df = pd.DataFrame([[0,1],[1,1],[0,1],[1,0],[1,1],[0,1]],columns = ['a','b'])
print(df)
   a  b
0  0  1
1  1  1
2  0  1
3  1  0
4  1  1
5  0  1
Run Code Online (Sandbox Code Playgroud)

我想要的结果是:

print(df)
   a  b
0  0  1
1  1  2
2  0  3
3  1  0
4  2  1
5  0  2
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试时df.cumsum() * df,我能够正确识别 0 元素,但计数器不会重置:

print(df.cumsum() * df)
   a  b
0  0  1
1  1  2
2  0  3
3  2  0
4 …
Run Code Online (Sandbox Code Playgroud)

python pandas cumsum

9
推荐指数
2
解决办法
6554
查看次数

标签 统计

cumsum ×10

python ×7

pandas ×5

r ×3

arrays ×2

dataframe ×2

numpy ×2

group-by ×1

if-statement ×1

logic ×1

loops ×1

matrix ×1

nan ×1

performance ×1

scipy ×1

sum ×1

vector ×1