- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个大型随机矩阵(500 x 100,000 或 500 x 10,000),我想将 cumprod 应用于每一列。在 500 x 10,000 上,我的代码运行时间为 13 秒。在 500 x 100,000 上它运行 32 分钟。在 tidyverse 中,是否有比以下更有效或更好的缩放方式来执行此操作?
library(tidyverse)
library(mc2d)
n.rows = 500 #Number of times
n.cols = 100000 #Number of samples
outcomes = as_tibble(matrix(1 + ifelse(rbern(n.rows * n.cols, .5), .5, -.4),
nrow = n.rows)) %>%
modify(cumprod)
最佳答案
如果您固定了tibble
数据的行数,您实际上可以使用Reduce
来实现cumprod
,这似乎是一个更快的选择
do.call(rbind, Reduce("*", asplit(df, 1), accumulate = TRUE))
基准(为此感谢@akrun's solutions)
> system.time({
+ out1 <- do.call(rbind, Reduce("*", asplit(df, 1), accumulate = TRUE))
+ })
user system elapsed
6.55 0.22 6.76
> system.time({
+ out2 <- setDT(df)[, lapply(.SD, cumprod)]
+ })
user system elapsed
44.93 0.02 45.01
> all.equal(out1, as.matrix(out2))
[1] TRUE
其中虚拟数据 df
给出为
set.seed(1)
nr <- 500
df <- as_tibble(matrix(rnorm(5e7), nr), nrow = nr)
关于r - 如何有效地将 cumprod 应用于 tidyverse 中的所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65450246/
我正在尝试优化两个变量的函数。问题是我的函数有一个 pandas 数据框 'df_main' ,其中包含 3 列作为 param_1、param_2 并返回,以便我希望最大化以下定义的输出, def
假设我有以下数据框 x = pd.DataFrame({'value': [1.0, 1.1, 1.1, 1.1, 1.2, 1.0, 0.9, 1.9, 1.7, 0.8, 0.5, 0.3]})
我仍然在努力处理以下代码: xa= [0, 0, 0, 0, 65, 67, 69, 75, 0, 0, 0] xb = [.3, .3, .3,.3, .3, .3, .3, .3, .3, .3,
我正在尝试将滚动累积产品添加到 pandas 的系列中。我的输入系列是: s 0 1 1 2 2 3 3 4 4 5 5 6 我想得到一个结果序列,它可以给出之前“n”个值的累积乘积
我需要计算以 Wgt 列中的新值指示的某个频率重置的累积产品。 例如,在由以下人员生成的 DataFrame 中: df = pd.DataFrame(np.random.lognormal(0, 0
我想计算包含每月返回的数据透视表的每年几何返回(累积返回),并将其作为一列添加到表中。数据透视表如下所示: In [474]: piv.tail(3) Out[474]: month 1 2
我有以下 df: id column 1 NaN 1 1 1 1.05 1 1.10 1 NaN 1 NaN 1 3
我有一个数据框,其中包含作为索引的日期和一个存储连续日期(即索引中的日期)之间的增长百分比的值列。假设我想通过在索引的第一个日期设置 100 基数然后迭代应用增长百分比来计算“实际”值。使用 cump
我正在尝试计算 xts 对象子集的累积乘积。这是我想要的一个例子,以及一个问题是否可以使用 period.apply 或其他一些基于 c++ 的快速函数更快/更优雅地完成? # install.pac
我有一个大型随机矩阵(500 x 100,000 或 500 x 10,000),我想将 cumprod 应用于每一列。在 500 x 10,000 上,我的代码运行时间为 13 秒。在 500 x
我有一个大型随机矩阵(500 x 100,000 或 500 x 10,000),我想将 cumprod 应用于每一列。在 500 x 10,000 上,我的代码运行时间为 13 秒。在 500 x
我正在尝试计算以下数据集的累积乘积。 Date Random data 1/2/2006 2.372388507 1/3/2006 2.792095479 1
我想将一个 Dataframe 分成 n 组,每组大小均匀: group_size = math.ceil(len(df)/n) 然后我想计算每个组的 cumprod。 例如: Val - Grou
我在数据框中有 2 列,我想为两者计算 cumprod,但是 cumprod 在单元格中看到 na 后需要重新启动 我试过直接使用 cumprod,但它没有给我正确的值,因为 cumprod 是连续的
我有一个带有日期时间的值列表: Datetime Val [[2017-01-01 15:00:00, 2], [2017-02-05 19:00:00, 3], [20
我想了解均值求和函数与 cumprod 函数之间的区别。 当我运行 groupby 然后运行平均值时,我得到了 id 列和预期的值的平均值。 当我使用 cumprod 运行它时,没有 groupby
我是一名优秀的程序员,十分优秀!