我想知道将RowMatrix的每一列相乘的好方法 用一个整数(每行乘以一个不同的整数)。
我知道我可以创建一个对角的mllib“ Matrix”对象,其中包含 值a1 ... an(ai是我要乘以ith的系数 行),然后我可以使用mllib的矩阵乘法(将RowMatrix乘以Matrix,这将得到RowMatrix作为结果)。但是,这可能效率不高,并且没有显示如何 在RowMatrix上做一些事情。
我是刚开始在行矩阵上编写函数,并尝试了一下 已经存在的东西,有点困惑。
感谢您的帮助
答案 0 :(得分:0)
不清楚是要将每行还是将每一列乘以不同的整数。您的标题和第二段说每列,但您的第一句话说每行。无论如何,通过调用.rows
并在基础RDD[Vector]
上进行操作,最容易实现这些类型的操作。例如:
def multiplyColumns(m: RowMatrix, xs: Array[Double]): RowMatrix = {
val newRowsRdd = m.rows.map {
row => Vectors.dense(row.toArray.zip(xs).map{case (a, b) => a * b})
}
new RowMatrix(newRowsRdd)
}