如何将两个数据框合并为(nrow, ncol, 2)维度数组用于Keras多变量时序分类
合并多变量时间序列数据框为Keras输入格式
要将两个结构一致的数据框转换为Keras要求的(样本数, 时间步, 变量数)维度数组,这里提供两种R语言实现方式:
方法一:基础R实现(无需额外包)
先将数据框转为矩阵,再通过array()函数构建三维数组:
# 示例数据 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)) # 转换为矩阵 mat1 <- as.matrix(dim1) mat2 <- as.matrix(dim2) # 动态获取维度参数 n_samples <- nrow(dim1) n_timesteps <- ncol(dim1) n_vars <- 2 # 构建目标数组 result <- array(c(mat1, mat2), dim = c(n_samples, n_timesteps, n_vars)) # 验证维度 dim(result) # 输出:4 3 2
方法二:使用abind包(更简洁)
abind包专门用于多维数组的合并,操作更直观:
# 安装并加载包(首次运行需安装) # install.packages("abind") library(abind) # 示例数据 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)) # 按第三维度合并矩阵 result <- abind(as.matrix(dim1), as.matrix(dim2), along = 3) # 验证维度 dim(result) # 输出:4 3 2
两种方法最终生成的数组都完全符合Keras多变量时间序列分类模型的输入格式要求。
内容的提问来源于stack exchange,提问作者Aleksandra
相关产品推荐
相关产品推荐

