首页 > 解决方案 > 在R中将矩阵转换为3d数组

问题描述

我有一个由 3 个数字组成的 2000 个序列组成的数据集,范围从 1 到 50(例如,(2,11,35)或(8,20,49))。数据位于 .csv 文件中,R 将其读取为数据框 - 2000 obs。3个变量,所有的整数。

我想将数据转换为“帧”的 3d 数组,其中每一帧都由最后 25 个序列组成。然后,具有 2d 卷积层的 keras 模型将学习预测第 26 个序列。

我尝试使用加载数据集as.matrix(read.csv()),然后

x<-dataset[1:25,]
for (i in 2:(nrow(dataset)-24)) {
x<-rbind(x, dataset[i:(i+24),])
}
x<-array_reshape(x,c(1976,25,3,1))

数据似乎以正确的形状出现,但是当我将其与原始数据进行比较时,我发现这些数字都是乱序的。使用dim()也没有帮助。

有人可以帮忙吗?

标签: rmultidimensional-arraykerasreshape

解决方案


我不确定我是否完全理解这个问题,但不会使用列表吗?元素的顺序应该保持不变。

results = list()
results[[1]]<-dataset[1:25,]

for(i in 2:(nrow(dataset)-24)){
   results[[i]] = dataset[i:(i+24),]
}

推荐阅读