【发布时间】:2016-05-03 11:31:53
【问题描述】:
我有一个 6,6,51 数组和一个 51,6 矩阵。我想将数组中矩阵 1 的第 1 行乘以矩阵中的第 1 行,然后将其存储为结果。我想对数组中包含的每个矩阵中的每一行再次执行此操作。所以我会取数组中第一个矩阵的第二行并将其乘以矩阵的第一行。循环遍历数组中第一个矩阵的所有 6 行后,我想对数组中剩余的 50 个矩阵执行完全相同的操作。
为了帮助说明我的问题,我将给出一个使用 6,6,3 数组和 3,6 矩阵的简短示例。 我会编一些数字以便于查看:
array1 <- array(1:108, c(6,6,3))
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 7 13 19 25 31
[2,] 2 8 14 20 26 32
[3,] 3 9 15 21 27 33
[4,] 4 10 16 22 28 34
[5,] 5 11 17 23 29 35
[6,] 6 12 18 24 30 36
, , 2
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 37 43 49 55 61 67
[2,] 38 44 50 56 62 68
[3,] 39 45 51 57 63 69
[4,] 40 46 52 58 64 70
[5,] 41 47 53 59 65 71
[6,] 42 48 54 60 66 72
, , 3
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 73 79 85 91 97 103
[2,] 74 80 86 92 98 104
[3,] 75 81 87 93 99 105
[4,] 76 82 88 94 100 106
[5,] 77 83 89 95 101 107
[6,] 78 84 90 96 102 108
matrix1 <- matrix(1:18, nrow = 3, ncol = 6)
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 4 7 10 13 16
[2,] 2 5 8 11 14 17
[3,] 3 6 9 12 15 18
基本上我想这样做:
array1 中矩阵 1 的第 1 行 x 矩阵 1 的第 1 行
1*1 + 7*4 + 13*7 + 19*10 +25*13 + 31*16 = result
然后在矩阵1的array1 x row1中执行matrix1的row2
等直到array1中matrix1的第6行
然后使用 matrix1 的 row2 在 array1 的矩阵 2 上重复
这可以理解吗?
如果可以,有人可以帮忙吗?
或者,有没有办法将 matrix1 拆分为向量?所以我可以得到 51 个单独的向量来与每个数组相乘?
问候
【问题讨论】:
-
这看起来像 R。如果是这样,就这样标记它。如果没有,请使用适当的语言标签对其进行标记。
-
你确定矩阵的大小吗?不应该是 6 x 6 吗?因为如果我们有一个维度为 6 x 6 x 51 的数组,那么将有 51 个 6 x 6 的矩阵。如果您的问题是正确的,您要求将 6 x 51 矩阵与 6 x 6 矩阵相乘。跨度>
-
如果矩阵维度是 Kunal Puri 建议的 6 x 6,则解决方案可能是:
apply(array1, 3, function(x) rowSums(matrix1 * x)) -
想象一下,我将矩阵(6,51 矩阵)分割成 51 个单独的向量,然后将数组中每个矩阵的每一行乘以第 i 个向量并为所有数组中的矩阵。
标签: arrays r matrix multiplication