Scala Breeze 向量的笛卡尔积
Scala Breeze Cartesian product of vectors
假设我有 2 个相同维度的向量:
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)
我如何从中计算出包含所有乘积的矩阵(类似于 db 中的笛卡尔乘积):
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
我觉得你应该可以通过广播来做到这一点,但我不知道怎么做。
谢谢。
这只是两个向量的外积:
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
假设我有 2 个相同维度的向量:
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)
我如何从中计算出包含所有乘积的矩阵(类似于 db 中的笛卡尔乘积):
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
我觉得你应该可以通过广播来做到这一点,但我不知道怎么做。 谢谢。
这只是两个向量的外积:
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