2012-02-18 5 views
1

Ceci est la fonctionnalité que j'essaie d'atteindre dans scala
créer une liste de certains nombres .. say (1, 2, 3, 4, 5) // ceci représente 1 document et ses caractéristiques
Il y aura n listes de ce type avec des caractéristiques différentes.Scala créer un vecteur clairsemé

Je veux mettre cette n listes dans une matrice. Alors que plus tard dans la ligne, si je veux faire des opérations sur cette matrice comme la matrice transpose, la matrice inverse je peux le faire facilement.

Actuellement, j'ai les listes prêtes, mais je ne sais pas comment utiliser la fonction sparseVector et Encoder de scala car le nombre de lignes pour cette matrice serait énorme (environ 1 million) et les colonnes seraient 200000. Donc la performance est également un problème

Répondre

3

vous pouvez utiliser une carte avec une valeur par défaut pour représenter une matrice clairsemée:

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

Si seules les lignes doivent être rares, vous pouvez utiliser quelque chose comme un Vector de Map[Int, Int] s au lieu. En général, cependant, si vous vous souciez de la mémoire ou de la performance des opérations matricielles, vous allez être beaucoup mieux avec une bibliothèque conçue pour résoudre ce genre de problème. J'ai été heureux avec le Colt libraries dans le passé, mais il y a un certain nombre d'autres options, comme Scalala et JScience.

+0

Oui! Connaissez-vous des fonctions spécifiques à scalala pour les opérations Matrix ou pour construire des matrices – Gaurav

+0

pouvez-vous donner un exemple de scalala MAtrix? – Gaurav

+0

@Guarav, la documentation Scalala donne [plusieurs exemples] (https://github.com/scalala/Scalala/wiki/QuickStart) de la façon de créer et de manipuler des matrices denses. Si vous avez besoin de matrices clairsemées, il est probablement préférable d'aller directement à COLT, où 'SparseDoubleMatrix2D' est [très explicite] (http://acs.lbl.gov/software/colt/api/cern/colt /matrix/impl/SparseDoubleMatrix2D.html). –

Questions connexes