将 2D data.frame 转换为 3D Array

Gur*_*nig 0 arrays r dataframe mnist

I\xc2\xb4m 无法将 2D 数据帧转换为 3D 数组。

\n\n

如何在 R 中将 42000x784 数据帧转换为 42000x28x28 3D 数组?

\n\n

谢谢!

\n

42-*_*42- 6

如果这是一个数字矩阵,那么它应该只占用42000*784 *10 == 329280000字节。如果它是字符向量,它可能会更大,具体取决于基础值中唯一项目的数量。我确实尝试使用“[r]矩阵重新维度”上的搜索来查找重复项,但没有成功,尽管我确实找到了警告人们重新维度的答案dim<-,因此请阅读此警告:当您想要重新维度矩阵时并且如果保持第一维不变,那么这是一个非常简单的过程。(如果这不是任务,那么您可能需要其他数组工具,例如abind::abindaperm。)下面的代码基本上是对列进行分区,以便矩阵中的相邻列在数组的切片内大部分保持“相邻”(显然在分区处除外) “中断”)。尝试:

train_a  <- train # make copy
dim(train_a) < c(42000,28,28)  # re-dimension
Run Code Online (Sandbox Code Playgroud)

尝试使用较小的矩阵:

 mymat <- matrix(1:36, 4,9)
 mymat_a <- mymat
 dim(mymat_a) <- c(4, 3,3)

> mymat_a
, , 1

     [,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10
[3,]    3    7   11
[4,]    4    8   12

, , 2

     [,1] [,2] [,3]
[1,]   13   17   21
[2,]   14   18   22
[3,]   15   19   23
[4,]   16   20   24

, , 3

     [,1] [,2] [,3]
[1,]   25   29   33
[2,]   26   30   34
[3,]   27   31   35
[4,]   28   32   36
Run Code Online (Sandbox Code Playgroud)