私は Scala を初めて使用し、一見簡単な問題に頭を悩ませています。私は Scala ライブラリを使用しており、 (可変) を取得して結果を行列に入れるbreeze
必要があります。array buffer
これは...簡単なはずですが?Scala は非常に型キャストされbreeze
ているため、DenseVector を作成するときにどのデータ型を使用するかについて、非常にうるさいようです。これは単なるプロトタイプ コードですが、解決策を考え出すのを手伝ってくれる人はいますか? 今、私は次のようなものを持っています...
//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)
微風では
M(0,0) = 100
、このようにして最初の値を 100 に設定することができます。次のようなこともできます
M(0, 0 to 2) := DenseVector(1, 2, 3)
。最初の行を 1、2、3 に設定します。しかし、次のようなことはできません...
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
最初の行を1、2、3に正常に変更します。そして、それは ArrayBuffer ではなく List です。
ArrayBuffer からデータ型を変更しても構わないと思っていますが、これにアプローチする方法がまったくわかりません... 行列の値を 1 つずつ更新してみることができますが、コードを作成するのは非常に面倒なようです (?)。
注: 私は Python プログラマーであり、配列の使用numpy
と配列の提供に慣れています。breeze
ドキュメントには、他のデータ型の例が十分に提供されていないため、これをまだ理解できていません。ありがとう!