私はScalaを初めて使いました。私は一見簡単な問題で精神的なブロックを持っています。私はScalaライブラリbreeze
を使用しており、array buffer
(変更可能)をとり、結果を行列に入れる必要があります。これは...シンプルにするべきですが? Scalaは非常に微妙に型キャストされていますbreeze
はDenseVectorを作成するときにどのようなデータ型を取るのか本当に不安です。これは単なるプロトタイプコードですが、誰も私が解決策を思いつくのを助けることができますか?設定 M(0, 0 to 2) := DenseVector(1, 2, 3)
: は、今私は風にScalaライブラリのブリーズを使って行列を埋めてください
//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に最初の値を設定することができます...のようなものを持っている、 はまた、もののように行うことができます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に最初の行を変更することはできません。 それはListであり、ArrayBufferでさえありません。
ArrayBufferからデータ型を変更しようとしていますが、これにアプローチする方法がわかりません...マトリックス値を1つずつ更新しようとする可能性がありますが、コード化するのは非常にハッキーです(?)。
注:私はnumpy
を使用し、それに配列を与えることに慣れているPythonプログラマーです。 breeze
のドキュメントでは、私がこれをまだ把握できていない他のデータ型の例は十分ではありません。 ありがとう!