【问题标题】:Scala Breeze expansion matrixScala Breeze 扩展矩阵
【发布时间】:2016-12-23 18:45:08
【问题描述】:

在 Octave/Matlab 中,我可以按如下方式展开单位矩阵。

>> I = eye(3)
I =
Diagonal Matrix
  1   0   0
  0   1   0
  0   0   1

>> A = [ 3 2 3 2 2 1 3 2 2 1 ]

>> E = I(:, A)
E =
   0   0   0   0   0   1   0   0   0   1
   0   1   0   1   1   0   0   1   1   0
   1   0   1   0   0   0   1   0   0   0

如何使用 Scala/Breeze 实现相同的目标(即从 A 获得 E,可能使用 I)?

【问题讨论】:

    标签: scala octave scala-breeze


    【解决方案1】:

    知道了。实际上与 Octave 非常相似。

    scala> val I = DenseMatrix.eye[Int](3)
    I: breeze.linalg.DenseMatrix[Int] =
    1  0  0
    0  1  0
    0  0  1
    
    scala> val A = DenseMatrix(2, 1, 2, 1, 1, 0, 2, 1, 1, 0) // zero based in breeze
    
    scala> I(::, A.toArray.toSeq)
    res26: breeze.linalg.SliceMatrix[Int,Int,Int] =
    0  0  0  0  0  1  0  0  0  1
    0  1  0  1  1  0  0  1  1  0
    1  0  1  0  0  0  1  0  0  0
    

    注意事项是:

    • 矩阵必须包含整数
    • 索引从 0 开始(与 Octave/Matlab 中的 1 相对)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-19
      • 2014-04-06
      • 2013-01-30
      • 2018-09-05
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多