1

这是我试图在 scala 中实现的功能,
创建一个包含一些数字的列表.. 比如说 (1, 2 ,3, 4, 5) // 这代表 1 个文档及其特征
将有 n 个具有不同特征的列表。

我想把这 n 个列表放入一个矩阵中。这样以后,如果我想对这个矩阵进行操作,比如矩阵转置,矩阵逆我可以很容易地做到这一点。

目前我已经准备好了列表,但我不确定如何使用 scala 的 sparseVector 和 Encoder 函数,因为这个矩阵的行数会很大(大约 100 万),列数会是 200000。所以性能也是问题

4

1 回答 1

3

您可以使用具有默认值的映射来表示稀疏矩阵:

val matrix = Map((0, 0) -> 1, (0, 1) -> 2, (30, 4) -> 3).withDefaultValue(0)

如果只需要稀疏行,则可以改用 a Vectorof Map[Int, Int]s 之类的东西。

但是,总的来说,如果您关心内存或矩阵运算的性能,那么使用旨在解决此类问题的库会好得多。过去我对Colt 库很满意,但还有许多其他选择,例如ScalalaJScience

于 2012-02-18T13:01:45.210 回答