Me pregunto cuál es la mejor manera de iterar entradas distintas de cero de matrices dispersas con scipy.sparse. Por ejemplo, si hago lo siguiente:Iteración a través de un vector scipy.sparse (o matriz)
from scipy.sparse import lil_matrix
x = lil_matrix((20,1))
x[13,0] = 1
x[15,0] = 2
c = 0
for i in x:
print c, i
c = c+1
la salida es
0
1
2
3
4
5
6
7
8
9
10
11
12
13 (0, 0) 1.0
14
15 (0, 0) 2.0
16
17
18
19
por lo que parece el iterador está en contacto con todos los elementos, no sólo los elementos no nulos. He echado un vistazo a la API
http://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.lil_matrix.html
y busqué un poco, pero me parece que no puede encontrar una solución que funcione.
Obviamente es mejor. – Kabie
¿Qué le parece usar 'izip()' en lugar de 'zip()'? Debería ser más rápido para matrices grandes. –
@Sven Marnach: Gracias; de hecho, eso es más rápido. – unutbu