web-dev-qa-db-ja.com

Cython:cimportおよびimport numpy as(both)np

Cythonドキュメントの tutorial には、numpyモジュールのcimportステートメントとimportステートメントがあります。

import numpy as np
cimport numpy as np

この規則は、numpy/cythonユーザーの間で非常に人気があることがわかりました。

bothという名前がnpであるため、これは私には奇妙に見えます。コードのどの部分で、imported/cimported npが使用されていますか?なぜcythonコンパイラはそれらを混同しないのですか?

28
ywat

cimport my_moduleは、[〜#〜] c [〜#〜]関数または属性、あるいはmy_moduleの下のサブモジュールへのアクセスを提供します

import my_moduleは、my_moduleの下のPython関数または属性またはサブモジュールへのアクセスを提供します。

あなたの場合:

cimport numpy as np

配列バッファー、変数タイプなどを宣言できるNumpy CAPIへのアクセスを提供します...

そして:

import numpy as np

np.arraynp.linspaceなどのNumPy-Python関数へのアクセスを提供します

Cythonはこのあいまいさを内部的に処理するため、ユーザーは別の名前を使用する必要がありません。

27