使用 Scala Breeze 向矩阵的每一列添加一个向量
Add a vector to every column of a matrix, using Scala Breeze
我有一个 (L x N) 阶矩阵 M,我想将长度为 L 的相同向量 v 添加到矩阵的每一列。有没有办法使用 Scala Breeze 做到这一点?
我试过了:
val H = DenseMatrix.zeros(L,N)
for (j <- 0 to L) {
H (::,j) = M(::,j) + v
}
但这并不真正符合 Scala 的不变性,因为 H 已经定义,因此重新分配给 val 错误。任何建议表示赞赏!
要将向量添加到矩阵的所有列,您不需要遍历列;您可以使用列广播功能,例如:
H(::,*) + v // assume v is breeze dense vector
应该可以。
import breeze.linalg._
val L = 3
val N = 2
val v = DenseVector(1.0,2.0,3.0)
val H = DenseMatrix.zeros[Double](L, N)
val result = H(::,*) + v
//result: breeze.linalg.DenseMatrix[Double] = 1.0 1.0
// 2.0 2.0
// 3.0 3.0
我有一个 (L x N) 阶矩阵 M,我想将长度为 L 的相同向量 v 添加到矩阵的每一列。有没有办法使用 Scala Breeze 做到这一点?
我试过了:
val H = DenseMatrix.zeros(L,N)
for (j <- 0 to L) {
H (::,j) = M(::,j) + v
}
但这并不真正符合 Scala 的不变性,因为 H 已经定义,因此重新分配给 val 错误。任何建议表示赞赏!
要将向量添加到矩阵的所有列,您不需要遍历列;您可以使用列广播功能,例如:
H(::,*) + v // assume v is breeze dense vector
应该可以。
import breeze.linalg._
val L = 3
val N = 2
val v = DenseVector(1.0,2.0,3.0)
val H = DenseMatrix.zeros[Double](L, N)
val result = H(::,*) + v
//result: breeze.linalg.DenseMatrix[Double] = 1.0 1.0
// 2.0 2.0
// 3.0 3.0