2012-01-04 19 views
5

好吧,我不认为,我可以用单词解释这个问题,所以,这里是ipython会话的片段,我在这里输入scipy,以便构造一个稀疏矩阵。在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> 

正在发生的事情有,为什么不能使用SP构建一个稀疏矩阵,在第一时间,当我在一个特定的方式导入稀疏子模块(如片段),SP和晶石变量现在可以用来构建稀疏矩阵。(我猜他们只是引用同一个对象)

我转载这条巨蟒默认的shell,(所以它不是IPython的具体)

这是怎么回事,是它通过设计??如果这么亲切地阐述。或者它是一个错误?

我的系统是Fedora 16 KDE-scientific,64位。

回答

9

这是Python的导入工具,而不是SciPy的工件。做

from scipy import sparse [as sp] 

import scipy.sparse [as sp] 

(其中[]是元标记可选性)。

简而言之,import声明需要知道模块的“真实”名称,而不是由import as声明创建的某个缩写。

+1

不,我正在导入总scipy作为sp,我希望从代码段清楚。你的意思是当我导入scipy作为sp,稀疏子模块不导入,因为它是可选的? – fedvasu 2012-01-04 14:53:10

+0

@fedvasu:无论您如何导入scipy,都不会导入'sparse'。您必须明确导入并使用其全名。 – 2012-01-04 14:53:53

+0

为什么这样? ,你能否在这里澄清一点:http://chat.stackoverflow.com/rooms/6384/quickscipy-talk – fedvasu 2012-01-04 14:56:11

相关问题