Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 从转置创建密度矩阵_Scala_Scala Breeze - Fatal编程技术网

Scala 从转置创建密度矩阵

Scala 从转置创建密度矩阵,scala,scala-breeze,Scala,Scala Breeze,我从几个星期开始使用Breeze,但我无法做一些看似简单的事情。我想将转置转换为DenseMatrix,例如: val matrix = DenseMatrix((1.0, 3.5), (3.0, 2.0)) // DenseMatrix val meanCols = mean(matrix(::, *)) // Transpose val meanColsDM = meanCols.toDenseMatrix // Error: value toDenseMatrix is not a mem

我从几个星期开始使用Breeze,但我无法做一些看似简单的事情。我想将转置转换为DenseMatrix,例如:

val matrix = DenseMatrix((1.0, 3.5), (3.0, 2.0)) // DenseMatrix
val meanCols = mean(matrix(::, *)) // Transpose
val meanColsDM = meanCols.toDenseMatrix // Error: value toDenseMatrix is not a member of breeze.linalg.Transpose
我曾想过创建一个循环,将转置转换为一个数组,然后创建DenseMatrix(使用示例中的矩阵创建1行2列),但我想知道是否有更简单的方法来获得相同的结果


我需要这样做,然后将列的平均值与其他矩阵联系起来,我没有将代码放在示例中,因为它不是问题的根源。

meanCols
是一个
转置[DenseVector[Double]]
,它只是
DenseVector[Double]
的包装器。如果要将结果转换为一行两列的矩阵,可以使用
.t
再次对其进行转置,以获得
DenseVector[Double]
,然后将其转换为具有
的矩阵。toDenseVector

scala> import breeze.linalg._, breeze.stats.mean
import breeze.linalg._
import breeze.stats.mean

scala> val matrix = DenseMatrix((1.0, 3.5), (3.0, 2.0))
matrix: breeze.linalg.DenseMatrix[Double] =
1.0  3.5
3.0  2.0

scala> val meanCols = mean(matrix(::, *))
meanCols: breeze.linalg.Transpose[breeze.linalg.DenseVector[Double]] = ...

scala> val meanColsDM = meanCols.t.toDenseMatrix
meanColsDM: breeze.linalg.DenseMatrix[Double] = 2.0  2.75