将矩阵的 RDD 转换为向量的 RDD
Convert RDD of Matrix to RDD of Vector
我有一个 RDD[Matrix[Double]] 并想将其转换为 RDD[Vector](Matrix 中的每一行都将转换为一个 Vector)。
我看过类似 的相关答案,但它是一个 Matrix to RDD of Vector。虽然我的情况是矩阵的RDD。
在 Matrix
到 Seq[Vector]
上使用 flatMap:
// from
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)
注:这段代码我没有测试,但是原理是这样
我有一个 RDD[Matrix[Double]] 并想将其转换为 RDD[Vector](Matrix 中的每一行都将转换为一个 Vector)。
我看过类似
在 Matrix
到 Seq[Vector]
上使用 flatMap:
// from
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)
注:这段代码我没有测试,但是原理是这样