提问人:Aleksandra 提问时间:4/15/2023 最后编辑:Aleksandra 更新时间:4/15/2023 访问量:40
将两个数据帧覆盖到一个维度数组中(nrow、ncol、2)
Covering two data frames into one array of dimentionality (nrow, ncol, 2)
问:
我正在构建用于多变量时间序列分类的 keras 模型。我使用的数据在数据帧中按维度分开,因此如果存在 2 变量时间序列,我有 2 个数据帧,每个数据帧具有相同数量的列(时间戳)和行(观测值)。在这种情况下,我的模型应该接受输入(nrow,ncol,2),但是我在将两个数据帧覆盖到这个维度的数组中时遇到了问题。 可以在此处找到示例数据:https://timeseriesclassification.com/description.php?Dataset=Libras
我知道这是一个基本问题,但我找不到任何简单的方法来做到这一点。
例:
dim1 <- data.frame(t1 = c(1:4), t2 = c(2:5), t3 = c(3:6))
dim2 <- data.frame(t1 = c(3:6), t2 = c(4:7), t3 = c(5:8))
因此,预期结果应返回:
dim(result)
> 4 3 2
并成为一个数组。
答:
2赞
SamR
4/15/2023
#1
这应该有效:
d <- array(
unlist(c(dim1, dim2)),
dim = c(4,3,2)
)
# Just to check
dim(d) # [1] 4 3 2
all(d[,,1] == dim1) # TRUE
all(d[,,2] == dim2) # TRUE
1赞
TarJae
4/15/2023
#2
我们可以使用函数:abind
?abind
组合多维数组。这是 cbind 和 rbind 的概括。采用向量、矩阵或数组序列,并生成相同或更高维度的单个数组。
library(abind)
# Combine data frames into a single array
result <- abind(dim1, dim2, along = 3)
dim(result)
[1] 4 3 2
评论