2012-02-18 57 views
1

這是我試圖在斯卡拉實現的功能
創建一些數字的列表..說(1,2,3,4,5)//這表示1個文檔及其功能
將會有n個具有不同特徵的這樣的列表。斯卡拉創建一個稀疏矢量

我想把這n個列表放到一個矩陣中。所以後來,如果我想像矩陣轉置那樣對矩陣進行操作,矩陣求逆我可以很容易地做到這一點。

目前我的列表已準備就緒,但我不確定如何使用scala的sparseVector和Encoder函數,因爲此矩陣的行數很大(大約一百萬),而列將是200000。性能也是一個問題

回答

3

你可以使用地圖默認值來表示稀疏矩陣:

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

如果只有行需要是稀疏,你可以使用像Map[Int, Int]Vector小號代替。但是,一般來說,如果您關心內存或矩陣操作的性能,那麼使用旨在解決此類問題的庫會更好。過去我一直對Colt libraries感到滿意,但還有很多其他選項,如ScalalaJScience

+0

是的!你知道矩陣操作或構建矩陣的特定於scalala的任何函數嗎? – Gaurav 2012-02-18 19:02:35

+0

你可以舉一個scalala MAtrix的例子嗎? – Gaurav 2012-02-18 21:35:00

+0

@Guarav,Scalala文檔給出了[若干示例](https://github.com/scalala/Scalala/wiki/QuickStart),介紹如何創建和操作密集矩陣。如果你需要稀疏矩陣,那麼直接進入COLT可能會好得多,在那裏'SparseDoubleMatrix2D'[非常明瞭](http://acs.lbl.gov/software/colt/api/cern/colt /matrix/impl/SparseDoubleMatrix2D.html)。 – 2012-02-20 16:27:44