在 Scala 中创建具有指定行数和列数的对角矩阵
Create a Diagonal Matrix with specified number of rows and columns in 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
。我需要 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
我可以添加那些矩阵,所以 matrix
的 diagonals
将更改为 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
,指定数量的 rows
和 columns
和 diagonals
作为 1
。但是由于 rows
和 columns
的数量太大,我需要一个 optimized solution
。或者有没有更好的解决方案来制作 matrix
到 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)
我有一个输入 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
我可以添加那些矩阵,所以 matrix
的 diagonals
将更改为 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
,指定数量的 rows
和 columns
和 diagonals
作为 1
。但是由于 rows
和 columns
的数量太大,我需要一个 optimized solution
。或者有没有更好的解决方案来制作 matrix
到 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)