2017-04-08 119 views
2

我正在使用Scala中的二维Breeze矩阵。在某些时候,我必须对两个矩阵进行元素划分。分母矩阵中的某些元素可以为零,从而导致结果中的NaN。如何基于某些条件替换Scala中的微风矩阵元素?

我可以遍历矩阵的维度,并用> 0来代替0.0s。

但是,有没有更简单的或Scala地道的解决方案呢?

回答

4

步骤一步:

  • 随着示例性矩阵:

    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] = [email protected] 
    
  • 更换使用切片矩阵:

    dm(dm :== 0.0) := 42.0 
    
    breeze.linalg.Vector[Double] = [email protected] 
    
  • 检查矩阵:

    dm 
    
    breeze.linalg.DenseMatrix[Double] = 
    1.0 42.0 3.0 
    42.0 5.0 6.0 
    
+0

谢谢!这是我正在寻找的。 – inferno