Pourquoi ne puis-je pas utiliser le scipy.io?
J'ai essayé de démarrer avec scipy, mais le paquet est de me donner quelques problèmes. Le tutoriel s'appuie fortement sur scipy.io, mais quand je l'importation scypi et essayez d'utiliser scipy.oi, j'ai des erreurs:
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'
J'ai exécuter le système de mises à jour et je l'ai désinstallé scipy puis installé de nouveau.
Assez intéressant, je peux importer le module de cette façon:
In [1]: import scipy.io
Mais quand j'essaie de l'utiliser, j'obtiens un message d'erreur dès que j'utilise une méthode:
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'
Je suis sûr que je suis absent quelque chose d'embarrassant de base, mais je n'ai pas été en mesure de trouver une réponse à ce problème sur Google ou dans le stackoverflow archives.
write_array
n'est pas dans scipy.io
, c'est en scipy.io.array_import
. Ne scipy.io.array_import.write_array
(après import scipy.io.array_import
)? Ce tutoriel vous la suite?OriginalL'auteur Chris Hanson | 2012-06-23
Vous devez vous connecter pour publier un commentaire.
Deux choses ici. Tout d'abord, vous ne pouvez pas en général d'accéder à un module dans un paquet en faisant
import package
et puis essayez d'accéderpackage.module
. Vous avez souvent à faire ce que vous faisiez,import package.module
, ou (si vous ne voulez pas taperpackage.module
tout le temps, vous pouvez fairefrom package import module
. Ainsi, vous pouvez également fairefrom scipy import io
.Deuxième, la
scipy.io
module ne fournit pas unwrite_array
fonction. Il ressemble peut-être utilisé pour, mais ils s'en sont débarrassés. Vous cherchez peut-être à une ancienne tutoriel. (Ce tutoriel vous aide?) Googler autour, il semble qu'ils suggèrent d'utiliser numpy estsavetxt
fonction au lieu de cela, de sorte que vous pouvez regarder dans.La documentation n'était pas terriblement obsolète à l'époque.
write_array
a été déplacé descipy.io
àscipy.io.array_import
(très) près d'un an et demi avant votre post original, puis, peu de temps après avoir enlevé complètement en faveur desavetxt
et amis.Aussi, vous pouvez maintenant utiliser seulement la
tofile
méthode qui est directement sur lendarray
. C'est encore plus facile.Je suis confus.. pourquoi l'appel de scipy.io.foo échouer lorsque seulement l'importation de scipy mais numpy.aléatoire.foo réussit quand seulement l'importation de numpy? Il ne semble pas très cohérent ici!
Parce que certaines bibliothèques auto-importer leurs submodules et d'autres pas (et quelques auto-importer des submodules, mais pas d'autres). Dans ce cas, il ressemble numpy ne et scipy ne le fait pas. Si il y a une bibliothèque appelée
blah
, il peut fairefrom . import foo, bar
, et alors vous serez en mesure de faireblah.foo.stuff
sans explicitement faireimport blah.foo
, parce queblah
déjà importéfoo
pour vous. Mais si la bibliothèque n'est pas explicitement de le faire lui-même, il ne sera pas fait de façon implicite.OriginalL'auteur BrenBarn