将行矩阵转换为 Breeze 密集矩阵

Converting a Row Matrix into a Breeze Dense Matrix

我有一个 MLLIB 分布式行矩阵,其中的行顺序无关紧要。有什么方法可以轻松地将其转换为 breeze 密集矩阵吗?我想 row-by-row 映射可能会起作用,但我对整个 breeze 相对不熟悉。

编辑:使用 X.rows.map(x => x.toArray),我设法将其转换为 org.apache.spark.rdd.RDD[Array[Double]] 形式的 RDD。我相信这是朝着正确方向迈出的一步...

最终使用下面的代码让它工作。

import breeze.linalg.{DenseVector => BDV, DenseMatrix => BDM, sum}
val arr = X.rows.map(x => x.toArray).collect.flatten
val dm = new BDM(X.numRows().toInt, X.numCols().toInt, arr)

谢谢 @ar7 的帮助。

对您的 RDD 进行收集。它会 return 你 Array[Array[Double]]

val array = your_rdd.collect()

将数组的数组转换为矩阵的方法如下:

val dm = DenseMatrix(array.map(_.toArray):_*)

部分答案来自here。希望这能解决问题。