scala - 如何根据某些条件替换 Scala 中微风矩阵的元素?

标签 scala apache-spark scala-breeze

我正在 Scala 中使用二维 Breeze 矩阵。在某些时候,我必须对两个矩阵进行逐元素除法。分母矩阵中的某些元素可能为零,从而导致结果中出现 NaN。

我可以遍历矩阵维度并将 0.0 替换为 > 0 的值。

但是有没有更简单的或 Scala 惯用的解决方案呢?

最佳答案

一步步:

  • 使用示例矩阵:
    val dm = DenseMatrix((1.0, 0.0, 3.0), (0.0, 5.0, 6.0))
    
  • 找出哪些元素等于 0.0:
    dm :== 0.0
    

    breeze.linalg.DenseMatrix[Boolean] =
    false  true   false
    true   false  false
    
  • 切片矩阵:
    dm(dm :== 0.0)
    

    breeze.linalg.SliceVector[(Int, Int),Double] = breeze.linalg.SliceVector@2b
    
  • 使用切片矩阵进行替换:
    dm(dm :== 0.0) := 42.0
    

    breeze.linalg.Vector[Double] = breeze.linalg.SliceVector@2b
    
  • 检查矩阵:
    dm
    

    breeze.linalg.DenseMatrix[Double] =
    1.0   42.0  3.0
    42.0  5.0   6.0
    
  • 关于scala - 如何根据某些条件替换 Scala 中微风矩阵的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43289341/

    相关文章:

    scala - 微风中的切片线性运算

    scala - CallingThreadDispatcher 有什么作用?

    scala - 如何在 Scala 中定义保留前导标记的三元运算符?

    apache-spark - Spark 上下文 : Error initializing SparkContext While Running Spark Job

    scala - 如何在 scala breeze 中初始化一个特定的随机种子,比如高斯分布?

    maven - 如何使用SBT的 “publish-local”命令进行Maven repo ?

    scala - 连接多个列表

    Scala:列表[Future]到Future[List],忽略失败的 future

    json - 德鲁伊 Parquet 摄取性能差

    python - 在数据框中注册临时表不起作用