Scala Breeze向量的笛卡尔积

4
假设我有两个维度相同的向量:
scala> val v = DenseVector(3.0, 4.0)
v: breeze.linalg.DenseVector[Double] = DenseVector(3.0, 4.0)

scala> val w = DenseVector(5.0, 6.0)
w: breeze.linalg.DenseVector[Double] = DenseVector(5.0, 6.0)

我该如何从中计算出一个矩阵,其中包含所有的乘积(类似于数据库中的笛卡尔积):
scala> val x = DenseMatrix(
     | (v(0) * w(0), v(0) * w(1)),
     | (v(1) * w(0), v(1) * w(1))
     | )
x: breeze.linalg.DenseMatrix[Double] =
15.0  18.0
20.0  24.0

我感觉你可以通过广播来完成它,但是我不知道具体怎么做。 谢谢。

1个回答

4

这只是两个向量的外积:

scala> import breeze.linalg._
import breeze.linalg._

scala> val v = DenseVector(3.0, 4.0)
v: breeze.linalg.DenseVector[Double] = DenseVector(3.0, 4.0)

scala>  val w = DenseVector(5.0, 6.0)
w: breeze.linalg.DenseVector[Double] = DenseVector(5.0, 6.0)

scala> v * w.t
res0: breeze.linalg.DenseMatrix[Double] =
15.0  18.0
20.0  24.0

似乎当使用 Vector 而不是 DenseVector 时,这个解决方案不起作用。有任何想法为什么? - mathk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接