1

これは私がscalaで達成しようとしている機能
ですいくつかの数字のリストを作成します..say(1、2、3、4、5)//これは1つのドキュメントとその機能を表し
ます異なる機能を持つそのようなリストはn個あります。

このn個のリストを行列に入れたいと思います。そのため、後で、行列の転置のようにこの行列に対して操作を実行したい場合は、行列の逆行列を簡単に実行できます。

現在、リストの準備はできていますが、このマトリックスの行数が膨大になり(約100万)、列数が200000になるため、scalaのsparseVectorおよびEncoder関数の使用方法がわかりません。したがって、パフォーマンスも問題

4

1 に答える 1

3

デフォルト値のマップを使用して、スパース行列を表すことができます。

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

行のみをスパースにする必要がある場合は、代わりにaofsのようなものを使用できVectorますMap[Int, Int]

ただし、一般的に、メモリや行列演算のパフォーマンスに関心がある場合は、この種の問題を解決するように設計されたライブラリを使用する方がはるかに優れています。過去にColtライブラリに満足していましたが、 ScalalaJScienceなど、他にも多くのオプションがあります。

于 2012-02-18T13:01:45.210 に答える