我有一个名为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
。我需要matrix
的对角线为1。如果我有一个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
我可以添加这些矩阵,因此diagonals
的{{1}}将更改为1。
matrix
我们可以根据以下给出的答案创建一个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
,rows
和columns
为diagonals
。但是由于1
和rows
的数量太大,我需要一个columns
。还是有更好的解决方案将对角线从optimized solution
到matrix
?
答案 0 :(得分:1)
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)