首页 文章

数组乘以矩阵中的各行

提问于
浏览
1

我有一个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

基本上我想这样做:

矩阵1的row1在array1 x row1的matrix1中

1*1 + 7*4 + 13*7 + 19*10 +25*13 + 31*16 = result

然后在matrix1的array1 x row1中执行matrix1的row2

等等直到array1中的matrix1的第6行

然后使用matrix1的row2在array1的矩阵2上重复

这可理解吗?

如果有的话可以帮助吗?

或者,有没有办法将matrix1拆分成向量?所以我可以得到51个单独的向量与每个数组相乘?

问候

1 回答

  • 0

    好吧,因为我仍然不确定你是指6 x 3矩阵还是6 x 6矩阵,所以这里有两种情况的解决方案(类似于我的评论):

    Rows <- min(dim(array1)[1], dim(matrix1)[1])
    Cols <- min(dim(array1)[2], dim(matrix1)[2])
    
    apply(array1, 3, function(x) rowSums(matrix1 * x[1:Rows,1:Cols]))
    

    array1 的其他行和列将不适合 matrix1 .

    简要解释如何获得解决方案:获取阵列的第一个平面并进行实验以获得所需的解决方案 .

    array1[ , , 1] * matrix1 #or array1[1:Rows, 1:Cols, 1] * matrix1
    

    rowSums 按照其名称的预期给出每行的总和 . 因此,数组中第一个平面的结果乘以矩阵并总结为矢量 .

    rowSums(array1[1:Rows, 1:Cols, 1] * matrix1)
    # 1131 1284 1449
    

    结果似乎是正确的,现在我们可以在数组的每个矩阵上找到解决方案,如答案的最顶部所示 .

相关问题