2012-01-04 5 views
5

ok, no creo, puedo explicar este problema en palabras así que, aquí está el fragmento de la sesión de ipython, donde importo scipy, para construir una matriz dispersa.¿Qué hay de malo con la importación de módulos en scipy, es un error?

In [1]: import scipy as sp 

In [2]: a = sp.sparse.lil_matrix((5,5)) 
     --------------------------------------------------------------------------- 
     AttributeError       Traceback (most recent call last) 
     /home/liveuser/<ipython-input-2-b5a55fc2d0ac> in <module>() 
     ----> 1 a = sp.sparse.lil_matrix((5,5)) 

     AttributeError: 'module' object has no attribute 'sparse' 

In [3]: import scipy.sparse as spar 

In [4]: ax = spar.lil_matrix((5,5)) 

In [5]: a = sp.sparse.lil_matrix((5,5)) # you are kidding me? 

In [6]: a 
Out[6]: 
     <5x5 sparse matrix of type '<type 'numpy.float64'>' 
     with 0 stored elements in LInked List format> 

In [7]: ax 
Out[7]: 
     <5x5 sparse matrix of type '<type 'numpy.float64'>' 
     with 0 stored elements in LInked List format> 

lo que está ocurriendo allí, por qué no puede construir una matriz dispersa utilizando sp, en el primer tiempo, cuando la importación sub-módulo escasa de una manera particular (como en fragmento), ambas variables SP y de larguero ahora puede ser usado para construir matrices dispersas. (supongo que no son más que las referencias a un mismo objeto)

I reproducido este shell por defecto pitón, (por lo que no se IPython específica)

lo que está pasando, es que por ¿¿diseño?? si tan amablemente elaborado. ¿¿O se trata de un error??

Mi sistema es Fedora 16 KDE-scientific, 64 bit.

Respuesta

9

Esto es un artefacto de la importación de Python, no de SciPy. Hacer

from scipy import sparse [as sp] 

o

import scipy.sparse [as sp] 

(donde [] es meta-notación para opcionalidad).

En resumen, la declaración import necesita saber el nombre "verdadero" del módulo, no alguna abreviatura creada por una declaración import as.

+1

No, estoy importando scipy total como sp, espero que esté claro desde el fragmento de código. ¿quieres decir cuando importo scipy como sp, el submódulo disperso no se importa ya que es opcional? – fedvasu

+0

@fedvasu: 'sparse' no se importa cuando' importa scipy', independientemente de cómo lo importe. Debe importarlo explícitamente y usar su nombre completo. –

+0

¿por qué es así? ¿Podría aclarar ese punto aquí? http://chat.stackoverflow.com/rooms/6384/quickscipy-talk – fedvasu

Cuestiones relacionadas