将行矩阵的每一列乘以整数

时间:2018-08-13 14:33:56

标签: scala apache-spark matrix

我想知道将RowMatrix的每一列相乘的好方法  用一个整数(每行乘以一个不同的整数)。

我知道我可以创建一个对角的mllib“ Matrix”对象,其中包含 值a1 ... an(ai是我要乘以ith的系数 行),然后我可以使用mllib的矩阵乘法(将RowMatrix乘以Matrix,这将得到RowMatrix作为结果)。但是,这可能效率不高,并且没有显示如何  在RowMatrix上做一些事情。

我是刚开始在行矩阵上编写函数,并尝试了一下 已经存在的东西,有点困惑。

感谢您的帮助

1 个答案:

答案 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)
}