【问题标题】:Scala create a sparse vectorScala 创建一个稀疏向量
【发布时间】:2012-03-09 13:16:09
【问题描述】:

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

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

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

【问题讨论】:

    标签: scala matrix encoder


    【解决方案1】:

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

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

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

    不过,一般来说,如果您关心内存或矩阵运算的性能,那么使用专为解决此类问题而设计的库会好得多。过去我对Colt libraries 很满意,但还有许多其他选项,例如ScalalaJScience

    【讨论】:

    • 是的!你知道任何特定于 scalala 的用于矩阵运算或构建矩阵的函数
    • 你能举一个scalala MAtrix的例子吗?
    • @Guarav,Scalala 文档提供了several examples 如何创建和操作密集矩阵。如果您需要稀疏矩阵,最好直接使用 COLT,其中 SparseDoubleMatrix2Dvery self-explanatory
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2015-11-19
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    相关资源
    最近更新 更多