スカラを初めて使いました。配列を繰り返して行列に値を代入するのに問題があります。私のプログラミングの背景は主にPythonなので、私はこの作業を行うための機能的な方法を見ていません。Scalaの配列の次の項目として各値を代入する
私は配列val averages = Array(1,2,3,4,5,6,7,8,9)
を持っています。私はScalaライブラリbreeze
で作られた空の3x3行列M
を持っています。私は配列から値を取り出して行列に入れる必要があります。これは動作しません、とマトリックスの結果は単に「1」で埋め
var index = 0
for(i <- 0 until M.cols)
for(j <- 0 until M.rows)
M(i,j) = averages(index)
index += 1
:
通常、私のような何かをしようとするだろう。 Scalaがになる前にM(i,j) = averages(index)
を評価しているため、これが前提です。私は、平均値のためfor
ループの異なる種類を試してきましたが、非常に私が望む結果を得ることができない:私はScalaでランダムコレクションをあなたがこれを行うことができることを知って
1 2 3
4 5 6
7 8 9
を、とで行列を埋めます確率変数:
val r = new scala.util.Random(0)
for(i <- 0 until M.rows)
for(j <- 0 until M.cols)
M(i, j) = r.nextDouble()
しかし、Scalaのドキュメントを見て、Array
は.next
メソッドを持っていません。
でも、.next
を使用しても、非常に反復的であり、機能的な解決策ではありません。誰でも私を助けることができます1)averages
を介してループする適切な方法を把握し、そして/または2)これを行うための機能的な方法を理解する?ありがとう!
'val averages = Array(1,2,3,4,5,6,7,8,9).toIterator'これは' next'を持っています。 – jwvh
最初のfor-loopで実行したい両方のステートメントの周りに中括弧(ブロックを作る)が必要です。 ScalaはScopingのためにPythonのようなインデントではなく{}を使用します –
あなたは 'Matrix.create(3、3、array)'のように必要なメソッドが既に存在するかもしれません。 –