【问题标题】:How can I find the index of the maximum values along rows of matrix Spark Scala?如何找到沿矩阵 Spark Scala 行的最大值的索引?
【发布时间】:2015-04-27 21:38:19
【问题描述】:

我有一个关于沿矩阵行查找最大值索引的问题。如何在 Spark Scala 中做到这一点?这个函数就像 Python 中 numpy 中的 argmax。

【问题讨论】:

    标签: scala matrix apache-spark max


    【解决方案1】:

    你的矩阵是什么类型的?如果是RowMatrix,您可以使用rows 访问其行向量的RDD

    如果我理解正确的话,找到这个RDD[Vector] 的每个向量的最大值很简单。因此,您可以myMatrix.rows.map{_.toArray.max}

    如果您有DenseMatrix,您可以将其转换为Array,此时您将拥有row-major form 中的元素列表。也可以通过numCols获取矩阵的列数,然后使用集合方法grouped获取行数。

    myMatrix.toArray.grouped(myMatrix.numCols).map{_.max}
    

    【讨论】:

    • 感谢回答。我有 DenseMatrix,不能按 rows.map 排列。我尝试通过以下方式将 DenseMatrix 转换为 RowMatrix: val rm: RowMatrix = new RowMatrix(dm) 但它不起作用。 (
    【解决方案2】:

    我认为您必须将值作为数组获取才能获得最大值。

        val dm: Matrix = Matrices.dense(3, 2, Array(1.0, 3.0, 5.0, 2.0, 4.0, 6.0))
    
        val result = dm.toArray.max
    
        println(result)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2015-10-20
      • 2021-11-10
      • 2020-10-11
      • 2013-07-10
      • 2021-03-18
      相关资源
      最近更新 更多