2012-02-18 2 views
1

これはスカラーで達成しようとしている機能です
これは1つのドキュメントとその特徴を表しています(say、1,2,3,4,5)。
異なる機能を持つn個のリストがあります。スカラは疎ベクトルを作成する

このn個のリストを行列に入れたいと思います。行列の転置のように行列を操作したい場合、行列逆行列は簡単に行えます。

現在、リストは用意されていますが、この行列の行数が膨大で(約1百万)、列数が200000になるため、scalarのsparseVectorとEncoder関数を使用する方法がわかりません。性能もあなたが疎行列を表現するために、デフォルト値でマップを使用することができ、問題

答えて

3

です:

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

行のみが疎にする必要がある場合、あなたはVectorMap[Int, Int]のsのようなものを使用することができます代わりに。

しかし、一般的には、メモリや行列操作のパフォーマンスを気にする人は、この種の問題を解決するように設計されたライブラリではるかに良いでしょう。私はこれまでにColt librariesに満足していますが、ScalalaJScienceのような数多くのオプションがあります。

+0

はい! Matrix演算や行列の構築のためにscalalaに特有の関数を知っていますか? – Gaurav

+0

scalala MAtrixの例を挙げられますか? – Gaurav

+0

@Guarav、Scalalaのドキュメントでは、密行列を作成して操作する方法について[いくつかの例を示します](https://github.com/scalala/Scalala/wiki/QuickStart)を提供しています。スパース行列が必要な場合は、 'SparseDoubleMatrix2D'が[非常に自明である] COLTに直接行くほうがはるかに良いでしょう(http://acs.lbl.gov/software/colt/api/cern/colt)。 /matrix/impl/SparseDoubleMatrix2D.html)。 –