小编HOS*_*JFL的帖子

Python:两个长度相同的列表的元素连接

我有两个相同长度的列表

a = [[1,2], [2,3], [3,4]]
b = [[9], [10,11], [12,13,19,20]]
Run Code Online (Sandbox Code Playgroud)

并希望将它们结合起来

c = [[1, 2, 9], [2, 3, 10, 11], [3, 4, 12, 13, 19, 20]]
Run Code Online (Sandbox Code Playgroud)

我是这样做的

c= []
for i in range(0,len(a)):
    c.append(a[i]+ b[i])
Run Code Online (Sandbox Code Playgroud)

但是,我从R使用以避免for循环,而zip和itertools之类的替代品不会生成我想要的输出.有没有办法做得更好?

编辑: 谢谢你的帮助!我的清单有300,000个组件.解决方案的执行时间是

[a_ + b_ for a_, b_ in zip(a, b)] 
1.59425 seconds
list(map(operator.add, a, b))
2.11901 seconds
Run Code Online (Sandbox Code Playgroud)

python

8
推荐指数
2
解决办法
5701
查看次数

在 data.table 中每个 ID 的开始日期和结束日期之间插入新的每日行

我有一个大型数据表,其中包含每个 ID 事件的开始日期和结束日期:

library(data.table)
dt = data.table(
    ID = c(1,1,2,2),
    STARTDATE = as.Date(c("2011-10-10","2011-10-13","2011-10-10","2011-10-13"),format = "%Y-%m-%d"),
    ENDDATE = as.Date(c("2011-10-12","2011-10-15","2011-10-12","2011-10-15"),format = "%Y-%m-%d")
)
dt   
>   ID  STARTDATE    ENDDATE
>1:  1 2011-10-10 2011-10-12
>2:  1 2011-10-13 2011-10-15
>3:  2 2011-10-10 2011-10-12
>4:  2 2011-10-13 2011-10-15
Run Code Online (Sandbox Code Playgroud)

我想将时间窗口中每个 ID 和日期的行添加到此数据表中,预期结果如下:

    STARTDATE    ENDDATE ID      DAILY
1: 2011-10-10 2011-10-12  1 2011-10-10
2: 2011-10-10 2011-10-12  1 2011-10-11
3: 2011-10-10 2011-10-12  1 2011-10-12
4: 2011-10-13 2011-10-15  1 2011-10-13
5: 2011-10-13 2011-10-15  1 2011-10-14
6: 2011-10-13 2011-10-15  1 2011-10-15
7: …
Run Code Online (Sandbox Code Playgroud)

r date data.table

6
推荐指数
1
解决办法
847
查看次数

R:减少位数/精度以节省 RAM?

我的 R 中的 RAM 用完了,data.table 包含 ~100M 行和 40 列全双打。我天真的想法是我可以通过降低精度来减少数据表的对象大小。逗号后不需要 15 位数字。我通过四舍五入来玩,但正如我们所知

round(1.68789451154844878,3)
Run Code Online (Sandbox Code Playgroud)

 1.6879999999999999
Run Code Online (Sandbox Code Playgroud)

并没有帮助。因此,我将值转换为整数。但是,如下面的小示例所示,对于数值向量,从 8000040 字节到 4000040 字节仅减少了 50%,并且在进一步降低精度时,这种减少不会再增加。

有没有更好的方法来做到这一点?

set.seed(1)
options(digits=22)

a1 = rnorm(10^6)
a2 = as.integer(1000000*(a1)) 
a3 = as.integer(100000*(a1)) 
a4 = as.integer(10000*(a1)) 
a5 = as.integer(1000*(a1)) 

head(a1)
head(a2)
head(a3)
head(a4)
head(a5)
Run Code Online (Sandbox Code Playgroud)

[1] -0.62645381074233242  0.18364332422208224 -0.83562861241004716  1.59528080213779155  0.32950777181536051 -0.82046838411801526
[1] -626453  183643 -835628 1595280  329507 -820468
[1] -62645  18364 -83562 159528  32950 -82046
[1] -6264  1836 -8356 15952  3295 -8204
[1] -626  183 -835 1595  329 -820 …
Run Code Online (Sandbox Code Playgroud)

r

5
推荐指数
1
解决办法
133
查看次数

分位数回归生成非单调分位数预测,例如Q49> Q50

我希望分位数回归可以预测单调的分位数,即

在此输入图像描述

但是,R中的quantreg包会生成完全没有意义的预测,请参见图:

在此输入图像描述

这有什么理由吗?

以下示例.

library(quantreg)
library(ggplot2)
data(engel)

taus <- seq(0.01,0.99,0.01)
model_qr <- quantreg::rq(foodexp~income,tau=taus,data = engel)

test <- data.frame(income = 200,  foodexp=  300)
result <- data.frame(
            Forecast = as.numeric(predict(model_qr, test)),
            Quantile = taus *100 
            )

ggplot(result, aes(x = Quantile, y = Forecast)) +
    geom_point() 
Run Code Online (Sandbox Code Playgroud)

r quantile-regression

5
推荐指数
0
解决办法
67
查看次数

R:将行/列索引的数据框转换为矩阵

我想像这样改造一个物体

df <- data.frame(ROW = c(1,3),COLUMN =c(2,3),VALUE = c(10,20))
df
ROW COLUMN VALUE 
1        2    10
3        3    20
Run Code Online (Sandbox Code Playgroud)

到这样的矩阵

m <-matrix(c(0,10,0,0,0,0,0,0,20),ncol = 3,nrow = 3)
m
     [,1] [,2] [,3]
[1,]    0    0    0
[2,]   10    0    0
[3,]    0    0   20
Run Code Online (Sandbox Code Playgroud)

我知道数据框代表一个稀疏矩阵,但我没有找到与我正在寻找的内容完全相关的任何其他问题。

r matrix dataframe

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

R:数据帧中行的选择包括NA

导入后我的数据如下所示

A = data.frame( ID= c(1,2,3,4,5,6), Name = c(NA,"A",NA,NA,NA,"B"))

>A
ID Name
1 <NA>
2    A
3 <NA>
4 <NA>
5 <NA>
6    B
Run Code Online (Sandbox Code Playgroud)

当我选择Name =="A"的所有行时,我期待这个结果:

   ID Name
2  2    A
Run Code Online (Sandbox Code Playgroud)

但是,我得到5行:

> A[A$Name=="A",]
     ID Name
NA   NA <NA>
2     2    A
NA.1 NA <NA>
NA.2 NA <NA>
NA.3 NA <NA>
Run Code Online (Sandbox Code Playgroud)

请注意,我不寻找,complete.cases()因为数据框中有更多列.我也确实指定了na.strings参数read.csv(...,na.strings = NA).缺少的值不是"NA",而是csv文件中的NA,并且在导入过程中使用它并没有改变任何东西.

r na

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

标签 统计

r ×5

data.table ×1

dataframe ×1

date ×1

matrix ×1

na ×1

python ×1

quantile-regression ×1