2013-10-30 20 views
5

Desidero utilizzare matrici sparse per la rappresentazione della funzione BOW. Ho sperimentato coo_matrix da scipy, ma non sembra supportare quello che voglio fare:Accesso a voci singole in Sparse Matrix in Python

Vorrei inizializzare una matrice di tutti gli zeri e quindi modificare una voce data a uno quando appropriato. Ma quando provo ad indicizzare la matrice come penso che dovrei - myMatrix [0] [0] = 1 (o anche myMatrix [0] [0] [0] = 1), per esempio - cambia tutti i valori in fila a 1. Voglio fare una sola voce 1.

Posso farlo facilmente con le matrici numpy, ma mi piacerebbe usare matrici sparse per l'efficienza dello spazio.

+0

Prova 'myMatrix [0, 0] = 1', che dovrebbe risolvere il tuo problema. – Jaime

+0

Sì, funziona, grazie. Ma devi avere .todense() quando si inizializza la matrice. – airpierre

risposta

4

Utilizzare il codice di destra sparse aiuta.

from scipy import sparse 
M = sparse.lil_matrix((10,10)) 
M[1,1] = 1 
M[5,5] = 1 
# <10x10 sparse matrix of type '<type 'numpy.float64'>' 
# with 2 stored elements in LInked List format> 

dok funziona anche. csr suggerisce di utilizzare lil. 'Coo' non può essere impostato in questo modo. Una volta completato, è facile convertirlo in un altro formato.

+0

+1 per la modifica su Halloween –