Je suis nouveau à Scala et j'ai un blocage mental sur un problème apparemment facile. J'utilise la bibliothèque Scala breeze
et j'ai besoin de prendre un array buffer
(mutable) et de mettre les résultats dans une matrice. Cela ... devrait être simple mais? Scala est si follement de type casté breeze
semble vraiment pointilleux sur les types de données qu'il prendra lors de la création d'un DenseVector. Ceci est juste un code prototype, mais quelqu'un peut-il m'aider à trouver une solution? En ce moment j'ai quelque chose comme ...remplir une matrice avec la bibliothèque Scala 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)
En brise vous pouvez faire des choses comme M(0,0) = 100
et définissez la première valeur à 100 cette façon, Vous pouvez aussi faire des choses comme: M(0, 0 to 2) := DenseVector(1, 2, 3)
qui définit la première ligne à 1, 2, 3 Mais je ne peux pas le faire faire quelque chose comme ...
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
et changer avec succès la première ligne au 1, 2,3. Et c'est avec une liste, même pas un ArrayBuffer. Je suis prêt à changer de type de données à partir de ArrayBuffer, mais je ne sais pas comment aborder cela ... pourrait essayer de mettre à jour les valeurs de la matrice une par une, mais cela semble être très difficile à coder (?).
Note: Je suis un programmeur Python qui est habitué à utiliser numpy
et à lui donner des tableaux. La documentation breeze
ne fournit pas suffisamment d'exemples avec d'autres types de données pour que je puisse comprendre cela. Merci!