从 scala 中的双数组列表创建 Breeze DenseMatrix
Create a Breeze DenseMatrix from a List of double arrays in scala
我有一个结构 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)
}
}
我浏览了 Breeze 文档,但没有找到任何内容。有没有更好的方法?
你可以试试这个:
val matrix = DenseMatrix(data:_*)
EDIT1
为了解释它是如何工作的,您可以将 data: _*
视为对变量参数的扩展。例如,如果
val data = List[Array[Double]](Array(1.0, 1.0), Array(2.0, 2.0))
那么DenseMatrix(data:_*)
等同于DenseMatrix(Array(1.0, 1.0), Array(2.0, 2.0))
更多详情:
- Syntax sugar: _* for treating Seq as method parameters
- Creating a Breeze DenseMatrix using an existing List of Lists in Scala
我有一个结构 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)
}
}
我浏览了 Breeze 文档,但没有找到任何内容。有没有更好的方法?
你可以试试这个:
val matrix = DenseMatrix(data:_*)
EDIT1
为了解释它是如何工作的,您可以将 data: _*
视为对变量参数的扩展。例如,如果
val data = List[Array[Double]](Array(1.0, 1.0), Array(2.0, 2.0))
那么DenseMatrix(data:_*)
等同于DenseMatrix(Array(1.0, 1.0), Array(2.0, 2.0))
更多详情:
- Syntax sugar: _* for treating Seq as method parameters
- Creating a Breeze DenseMatrix using an existing List of Lists in Scala