Ich bin neu in Scala und ich habe eine mentale Blockade auf ein scheinbar einfaches Problem. Ich benutze die Scala-Bibliothek breeze
und muss eine array buffer
(veränderbar) nehmen und die Ergebnisse in eine Matrix setzen. Das ... sollte einfach sein aber? Scala ist so wahnsinnig typgegossen breeze
scheint wirklich wählerisch darüber, welche Datentypen es bei der Erstellung eines DenseVectors braucht. Dies ist nur ein Prototyp-Code, aber kann mir jemand helfen, eine Lösung zu finden? Im Moment habe ich so etwas wie ...Füllen einer Matrix mit Scala Bibliothek Brise
//9 elements that need to go into a 3x3 matrix, 1-3 as top row, 4-6 as middle row, etc)
val numbersForMatrix: ArrayBuffer[Double] = (1, 2, 3, 4, 5, 6, 7, 8, 9)
//the empty 3x3 matrix
var M: breeze.linalg.DenseMatrix[Double] = DenseMatrix.zeros(3,3)
In Brise Sie Sachen wie M(0,0) = 100
und stellen Sie den ersten Wert auf 100 auf diese Weise tun können, können Sie tun auch Sachen wie: M(0, 0 to 2) := DenseVector(1, 2, 3)
, die die Sets erste Reihe 1, 2, 3 Aber ich kann es nicht so etwas wie zu tun bekommen ...
var dummyList: List[Double] = List(1, 2, 3) //this works
var dummyVec = DenseVector[Double](dummyList) //this works
M(0, 0 to 2) := dummyVec //this does not work
und erfolgreich die erste Reihe zum 1 ändern, 2,3. Und das ist mit einer Liste, nicht einmal ein ArrayBuffer.
Bin bereit, die Datentypen von ArrayBuffer zu ändern, aber einfach nicht sicher, wie man das überhaupt angehen könnte ... könnte versuchen, die Matrixwerte einzeln zu aktualisieren, aber das scheint VERY hacky zu sein, um (?) Zu kodieren.
Hinweis: Ich bin ein Python-Programmierer, der gewohnt ist, numpy
zu verwenden und es nur Arrays zu geben. Die breeze
Dokumentation liefert nicht genügend Beispiele mit anderen Datentypen, um das herauszufinden. Danke!