我有一个像矩阵
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)(我有巨大的矩阵)
谢谢!
我在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) 我觉得这是一个相当容易的问题,但对于我的生活,我似乎无法找到答案.我有一个相当标准的数据框,我想要做的是将一列值相加,直到它们达到某个值(精确值或大于它),此时它将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放入保留列,然后重新开始求和,并继续在整个数据集中运行.
在此先感谢,如果您需要更多信息,请告诉我们.
艾登
我和熊猫一起工作,但我没有那么多经验.我有以下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) 我有这个数据帧
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) 假设我有一个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) 我正在寻找一种简洁的方法:
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呢?
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)
我有一个如下数据框:
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)
我不知道如何计算计数部分。任何帮助都非常感谢
我有一个包含 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)