从转置创建 DenseMatrix
Creating a DenseMatrix from a Transpose
我从几个星期开始就开始使用 Breeze,但我无法做一些看似简单的事情。我想将 Transpose 转换为 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
是一个 Transpose[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
我从几个星期开始就开始使用 Breeze,但我无法做一些看似简单的事情。我想将 Transpose 转换为 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
是一个 Transpose[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