我有一個 RDD[Matrix[Double]] 并想將它轉換為 RDD[Vector](矩陣中的每一行都將轉換為一個向量)。
我已經看到相關的答案,例如使用 Scala 在 Apache Spark 中將矩陣轉換為 RowMatrix,但它是 Vector 的 RDD 矩陣之一。雖然我的情況是 Matrix 的 RDD。
uj5u.com熱心網友回復:
在代碼上 使用 flatMap轉換Matrix為Seq[Vector]:
// from https://stackoverflow.com/a/28172826/1206998
def toSeqOfVector(m: Matrix): Seq[Vector] = {
val columns = m.toArray.grouped(m.numRows)
val rows = columns.toSeq.transpose // Skip this if you want a column-major RDD.
rows.map(row => new DenseVector(row.toArray))
}
val matrices: RDD[Matrix] = ??? // your input
val vectors: RDD[Vector] = matrices.flatMap(toSeqOfVector)
注意:我沒有測驗這段代碼,但這是原理
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/311432.html
