2011-03-25 18 views
7

¿Es posible aplicar, por ejemplo, numpy.exp o operadores puntuales similares a todos los elementos en un formato scipy.sparse.lil_matrix u otro formato de matriz dispersa?operaciones puntuales en matrices scipy.sparse

import numpy 
from scipy.sparse import lil_matrix 

x = numpy.ones((10,10)) 
y = numpy.exp(x) 

x = lil_matrix(numpy.ones((10,10))) 
# y = ???? 

numpy.exp(x) o scipy.exp(x) produce un AttributeError, y numpy.exp(x.data) produce los mismos.

gracias!

+1

Creo que en la actualidad esto no se hace para trabajar en cualquiera de los formatos de matriz dispersa. Personalmente, creo que las funciones dispersas separadas deben hacerse en lugar de ralentizar las regulares. La solución temporal, como lo muestra Olivier, es convertir básicamente a cualquier otro formato disperso y trabajar en el atributo 'data'. El atributo de datos de las matrices lil no funciona para esto porque es una matriz de tipo objeto. –

Respuesta

6

No sé los detalles, pero la conversión a otro tipo de obras, al menos cuando se utiliza el conjunto de elementos no cero:

xcsc = x.tocsc() 
numpy.exp(xcsc.data) # works 
+2

Sí. Como dice en los documentos http://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.lil_matrix.html, el formato lil está destinado principalmente a ser usado como un método para construir matrices dispersas que no realizan operaciones. . Los documentos recomiendan realizar esta conversión una vez que las matrices están compiladas. – Paul

Cuestiones relacionadas