Ich habe eine 6,6,51-Array und eine 51,6-Matrix. Ich möchte Zeile 1 von Matrix 1 im Array mit Zeile 1 in der Matrix multiplizieren und diese dann als Ergebnis speichern. Ich möchte das für jede Zeile in jeder Matrix, die in dem Array enthalten ist, wiederholen. Also nehme ich die zweite Reihe der 1. Matrix in das Array und multipliziere sie mit der ersten Zeile der Matrix. Nachdem ich alle sechs Zeilen der ersten Matrix im Array durchlaufen habe, möchte ich genau dasselbe mit den restlichen 50 Matrizen im Array machen.Array multipliziert mit einzelnen Zeilen in Matrix
Um die Darstellung dessen zu erleichtern, was ich frage, gebe ich ein verkürztes Beispiel mit einem 6,6,3-Array und einer 3,6-Matrix. Ich werde ein paar Zahlen machen, so dass es einfacher ist, zu betrachten:
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
Im Wesentlichen würde ich dies tun:
row1 die Matrix 1 in array1 x row1 von matrix1
1*1 + 7*4 + 13*7 + 19*10 +25*13 + 31*16 = result
dann tun row2 von matrix1 in array1 x row1 von matrix1
etc etc, bis Zeile 6 von matrix1 in array1
dann wiederholen Sie in Matrix 2 von Array1 mit Zeile2 von Matrix1
Ist das verständlich?
Wenn ja, kann jemand helfen?
Gibt es alternativ eine Möglichkeit, matrix1 in Vektoren aufzuteilen? Also könnte ich einfach 51 separate Vektoren erhalten, um sich gegen jedes Array zu multiplizieren?
Grüße
Dies sieht wie R aus. Wenn ja, markieren Sie es als solches. Falls nicht, markieren Sie sie mit dem entsprechenden Sprach-Tag. –
Sind Sie sich über die Größe der Matrix sicher? Sollte es nicht 6 x 6 sein? Denn wenn wir ein Array mit den Dimensionen 6 x 6 x 51 haben, dann wird es 51 Matrizen von 6 x 6 geben. Und wenn deine Frage richtig ist, willst du eine 6 x 51 Matrix mit 6 x 6 Matrix multiplizieren. –
Wenn die Matrix-Dimension 6 x 6 ist, wie Kunal Puri vorgeschlagen, wäre die Lösung wahrscheinlich: "anwenden (array1, 3, Funktion (x) rowSums (matrix1 * x))" – Phann