2012-01-04 6 views
5

ok、私はそうは思わない、私は言葉でこの問題を説明することができますので、ここでは、疎な行列を構築するために、scipyをインポートするipythonセッションのスニペットです。scipyでモジュールをインポートすると何が問題になりますか?それはバグですか?

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> 

iは(スニペットのように)特定の方法で疎なサブモジュールをインポートすると、そこに何が起こっているのか、なぜ、最初の時間に、SPを使用してSPとスパー変数の両方をスパース行列を構築することができません今スパース行列を構築するために使用することができます。(私は、彼らが同じオブジェクトへの参照のみです推測)

私は、このPythonのデフォルトのシェルを再現し(それは特定のipythonされていない)

で何が起こっているか、それがです設計??もし親切であれば親切にしてください。それともバグですか?

私のシステムはFedora 16 KDE-scientific、64ビットです。

答えて

9

これはSciPyではなく、Pythonのインポートの成果物です。 ([]は、選択性のためのメタ表記です)

from scipy import sparse [as sp] 

または

import scipy.sparse [as sp] 

を行います。

つまり、importステートメントは、import asステートメントで作成された略語ではなく、モジュールの「真の」名前を知る必要があります。

+1

いいえ、私はspとして総scipyをインポートしています、私はコードスニペットからそれがはっきりしていることを願っています。私はspとしてインポートscipyを意味する、スパースサブモジュールは、オプションであるので、インポートされていない?? – fedvasu

+0

@fedvasu:インポートする方法にかかわらず、 'import scipy'は' sparse'をインポートしません。明示的にインポートし、フルネームを使用する必要があります。 –

+0

なぜそれ? 、あなたはその点を明確にすることができますhttp://chat.stackoverflow.com/rooms/6384/quickscipy-talk – fedvasu

関連する問題