将 2D data.frame 转换为 3D 数组
convert 2D data.frame into 3D Array
我无法将 2D 数据帧转换为 3D 数组。
如何在 R 中将 42000x784 数据帧转换为 42000x28x28 3D 数组?
谢谢!
如果这是一个数字矩阵,那么它应该只需要 42000*784 *10 == 329280000
个字节。如果它是一个字符向量,它可能会更大,具体取决于基础值中唯一项的数量。我确实尝试使用搜索“[r] matrix re-dimension”找到重复项但没有成功,尽管我确实找到了警告关于使用 dim<-
重新标注尺寸的答案,所以请阅读这个警告:当你想重新-dimension 一个矩阵并且保持第一个维度不变,那么这是一个非常简单的过程。 (如果这不是任务,那么您可能需要其他数组工具,例如 abind::abind
或 aperm
。)下面的代码基本上是对列进行分区,以便矩阵中的相邻列大部分保持 "adjacent" 在数组的切片内(显然在分区 "breaks" 处除外)。尝试:
train_a <- train # make copy
dim(train_a) < c(42000,28,28) # re-dimension
尝试使用较小的矩阵:
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
我无法将 2D 数据帧转换为 3D 数组。
如何在 R 中将 42000x784 数据帧转换为 42000x28x28 3D 数组?
谢谢!
如果这是一个数字矩阵,那么它应该只需要 42000*784 *10 == 329280000
个字节。如果它是一个字符向量,它可能会更大,具体取决于基础值中唯一项的数量。我确实尝试使用搜索“[r] matrix re-dimension”找到重复项但没有成功,尽管我确实找到了警告关于使用 dim<-
重新标注尺寸的答案,所以请阅读这个警告:当你想重新-dimension 一个矩阵并且保持第一个维度不变,那么这是一个非常简单的过程。 (如果这不是任务,那么您可能需要其他数组工具,例如 abind::abind
或 aperm
。)下面的代码基本上是对列进行分区,以便矩阵中的相邻列大部分保持 "adjacent" 在数组的切片内(显然在分区 "breaks" 处除外)。尝试:
train_a <- train # make copy
dim(train_a) < c(42000,28,28) # re-dimension
尝试使用较小的矩阵:
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