【问题标题】:Creating a DenseMatrix from a Transpose从转置创建 DenseMatrix
【发布时间】:2016-04-07 05:50:58
【问题描述】:

我几周前就开始使用 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 列使用示例中的矩阵),但我想知道是否有更简单的方法来获得相同的东西。

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

【问题讨论】:

    标签: scala scala-breeze


    【解决方案1】:

    meanColsTranspose[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
    

    【讨论】:

      猜你喜欢
      • 2018-06-18
      • 2014-06-05
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      相关资源
      最近更新 更多