从 Scala 中的双数组列表创建 Breeze DenseMatrix

MLe*_*ria 2 scala scala-breeze

我有一个结构List[Array[Double]],我想转换为 DenseMatrix。我有这个解决方案,但我认为可能有更好的方法:

val data = List[Array[Double]]
val rows = data.length;
val cols = data(0).length;
val matrix = DenseMatrix.zeros[Double](rows, cols)
for (i <- 0 until data.length) {
  for (j <- 0 until data(i).length) {
    matrix(i,j)= data(i)(j)

  }
}
Run Code Online (Sandbox Code Playgroud)

我已经浏览了微风文档,但没有找到任何东西。有没有更好的办法?

tux*_*dna 5

你可以试试这个:

val matrix = DenseMatrix(data:_*)
Run Code Online (Sandbox Code Playgroud)

编辑1

为了解释它是如何工作的,您可以将其data: _*视为扩展为可变参数。例如如果

val data = List[Array[Double]](Array(1.0, 1.0), Array(2.0, 2.0))
Run Code Online (Sandbox Code Playgroud)

然后DenseMatrix(data:_*)和说一样DenseMatrix(Array(1.0, 1.0), Array(2.0, 2.0))

更多细节: