2012-06-23 25 views
7

He estado tratando de comenzar con scipy, pero el paquete me está dando algunos problemas. El tutorial se apoya fuertemente en scipy.io, pero cuando la importación scypi y trata de usar scipy.io, tengo errores:¿Por qué no puedo usar scipy.io?

In [1]: import scipy 

In [2]: help(scipy.io) 
--------------------------------------------------------------------------- 
AttributeError       Traceback (most recent call last) 
/home/chris/dev/scipy/<ipython-input-2-ef060398b31c> in <module>() 
----> 1 help(scipy.io) 

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

He ejecutar las actualizaciones del sistema y he desinstalado scipy después se instala de nuevo.

Curiosamente, puedo importar el módulo de esta manera:

In [1]: import scipy.io 

Pero cuando trato de usarlo, me sale un error tan pronto como yo uso un método:

In [2]: arr = scipy.array([[1.0,2.0],[3.0,4.0],[5.0,6.0]]) 
In [3]: outFile = file('tmpdata1.txt', 'w') 
In [4]: scipy.io.write_array(outFile, arr) 
--------------------------------------------------------------------------- 
AttributeError       Traceback (most recent call last) 
/home/chris/dev/scipy/<ipython-input-4-46d22e4ff485> in <module>() 
----> 1 scipy.io.write_array(outFile, arr) 

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

Estoy seguro de que me estoy perdiendo algo vergonzosamente básico, pero no he podido encontrar una respuesta a este problema en Google o en los archivos de stackoverflow.

+0

'write_array' no está en' scipy.io', está en ['scipy.io.array_import'] (http://www.scipy.org/doc/api_docs /SciPy.io.array_import.html#write_array). Hace 'scipy.io.array_import.write_array' (después de 'import scipy.io.array_import') ¿funciona? ¿Qué tutorial estás siguiendo? –

Respuesta

15

Dos cosas aquí. En primer lugar, no puede acceder en general a un módulo en un paquete haciendo import package y luego tratando de acceder al package.module. A menudo se tiene que hacer lo que hizo, import package.module, o (si no desea escribir package.module todo el tiempo, puede hacerlo from package import module. Así también se puede hacer from scipy import io.

En segundo lugar, el módulo no proporciona scipy.io una función write_array. Parece que tal vez solía, pero se deshicieron de ella. Puede que esté buscando un tutorial obsoleto. (¿Qué tutorial está usando?) Buscando en Google, parece que sugieren utilizar la función savetxt de numpy en su lugar, por lo que es posible que desee examinar eso.

+0

Sí, parece que el tutorial que estaba usando (http://cutter.rexx.com/~dkuhlman/scipy_course_01.html) estaba terriblemente desactualizado. Ni siquiera recuerdo cómo lo encontré ahora, pero encontré el que está en el sitio scipy (http://docs.scipy.org/doc/scipy/reference/tutorial/) que usaré a partir de ahora. ¡Gracias por aclarar mi confusión de importación también! –

+0

La documentación no estaba terriblemente desactualizada en ese momento. 'write_array' se movió de' scipy.io' a 'scipy.io.array_import' (muy) más o menos un año y medio antes de su publicación original, y luego lo eliminó por completo a favor de' savetxt' y sus amigos. –

+0

Además, ahora puede simplemente usar el método 'tofile' que está directamente en' ndarray'. Eso es aún más fácil. –

Cuestiones relacionadas