首页 > 解决方案 > 在 Scala 中创建具有指定行数和列数的对角矩阵

问题描述

mllib我有一个名为的输入块矩阵matrix

matrix : org.apache.spark.mllib.linalg.Matrix =
0.0  2.0  1.0  2.0
2.0  0.0  2.0  4.0
1.0  2.0  0.0  3.0
2.0  4.0  3.0  0.0

根据我的 Scala 代码,对角线是zero肯定的。我需要 的对角线为matrix1。如果我的diagonal matrix对角线值1如下,

diagonalMatrix: org.apache.spark.mllib.linalg.Matrix =
1.0  0.0  0.0  0.0
0.0  1.0  0.0  0.0
0.0  0.0  1.0  0.0
0.0  0.0  0.0  1.0

我可以添加这些矩阵,所以diagonalsofmatrix将更改为 1。

matrix : org.apache.spark.mllib.linalg.Matrix =
    1.0  2.0  1.0  2.0
    2.0  1.0  2.0  4.0
    1.0  2.0  1.0  3.0
    2.0  4.0  3.0  1.0

我们可以根据下面给出的答案创建一个diagonal matrix指定数量的rowsandcolumns和 and 。但由于 和 的数量太大,我需要一个. 或者有没有更好的解决方案来制作 to 的对角线?diagonals1rowscolumnsoptimized solutionmatrix1

标签: scalaapache-sparkmatrixapache-spark-mllib

解决方案


val nR = 5
val nC = 5

val seq = for {
  i <- 0 until nC
  j <- 0 until nR
  v = if (i == j) 1d else 0d
} yield v

val matrix = DenseMatrix(nR, nC, seq.toArray)

推荐阅读