Scala создать разреженный вектор - PullRequest
1 голос
/ 18 февраля 2012

Это функциональность, которую я пытаюсь реализовать в Scala
создать список из нескольких чисел .. скажем (1, 2, 3, 4, 5) // это представляет 1 документ и его функции
Тамбудет таких списков с разными функциями.

Я хочу поместить эти n списков в матрицу.Так что позже, если я захочу выполнить операции с этой матрицей, такие как транспонирование матрицы, с обратной матрицей, я могу сделать это легко.

В настоящее время у меня есть готовые списки, но я не уверен, как использоватьфункции sparseVector и Encoder в scala, поскольку число строк в этой матрице будет огромным (около 1 миллиона), а столбцов - 200000. Таким образом, производительность также является проблемой

1 Ответ

3 голосов
/ 18 февраля 2012

Вы можете использовать карту со значением по умолчанию для представления разреженной матрицы:

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

Если только строки должны быть разреженными, вы можете использовать что-то вроде Vector из Map[Int, Int] s.вместо этого.

В общем, однако, если вы заботитесь о памяти или производительности матричных операций, вам будет намного лучше с библиотекой, которая была разработана для решения такого рода проблем.Я был доволен библиотеками Colt в прошлом, но есть ряд других опций, таких как Scalala и JScience .

...