2017-03-06 4 views
1

Iはdir(random)numpy.randomからNumPyのすべてにどのようにアクセスできますか?

from numpy import random 

をインポートした後numpy.randomに利用可能なものを介して突き、例えば、最上位モジュールと同等見える範囲で可変npがあったことに気づいた

In[1]: from numpy import random 

In[2]: random.np.fft.fft2 
Out[2]: <function numpy.fft.fftpack.fft2> 

In[3]: random.np.random.np.fft.np # not the same for fft 

AttributeErrorTraceback (most recent call last) 
<ipython-input-78-a64e04c36c80> in <module>() 
----> 1 random.np.random.np.fft.np 

AttributeError: module 'numpy.fft' has no attribute 'np' 

これは私にとってはちょっと変わったようです...少なくとも、他のPythonモジュールでは見たことがありません。 randomの変数からnpまでのすべてのものにアクセスできるようです。

サブモジュールがどのように利用可能であるかを見たいので、ソースコードでnumpy/random/__init__.pyを調べましたが、どのように利用可能になっているのか分かりませんでした。私はまたnumpy/random/info.py__all__に見ましたが、モジュールにどのようにさらされているのか見当たりません。

トップレベルのモジュールはどのようにしてnumpy.randomに利用可能になったのですか?利用可能な動機はありますか?

答えて

2

だからnumpy/random/mtrand/mtrand.pyxline 146に我々は見つける:

import numpy as np 

は、このように、モジュールの名前空間にシンボルを配置します。これはPythonでアクセスできます私はこのラインが私たちのモジュール全体に散らかったのと同じ理由で存在していると思います。つまり、このモジュールはnumpyの機能にアクセスする必要があります。

そして、我々は/numpy/random/__init__.pyline 99で見つける1つのレベルのバックアップ:

from .mtrand import * 

円を閉じて、numpy.randomモジュールを介して私たちにnpへのアクセス権を取得します。

+0

あなたが見つかりました。私はそれを作ることよりも簡単でした、ありがとう! –

関連する問題