2016-01-04 4 views
6

私は、numpy、{typeename}、numpy.npy_ {typename}とnumpyの違いは分かりません。{typename} _tはCythonコードから使用しますか?Cythonユーザのナンシータイプ

すなわち、これらのタイプの違いです:

# test.pyx 
cimport numpy as np 
import numpy as np 

np.float32 
np.npy_float32 
np.float32_t 

私は今それを理解するように第一のタイプは動的である、すなわち、Cythonは、実行時にそのタイプの大きさを検出するためのいくつかのコードを生成します。他の2つのタイプは静的です。つまり、それを使用するコードは、各タイプの事前定義されたサイズでコンパイルされます。私を修正してください。

追加リンク:https://docs.scipy.org/doc/numpy/reference/c-api.dtype.html#c-type-names

答えて

6

np.float32はただのPythonのように配列を構築するためにnumpyのに照会して渡すことができるPythonオブジェクトであるnumpyののTypeDescriptor、です。

np.npy_float32はCタイプであり、Cタイプが必要な場合はどこでも使用できます。

cdef np.npy_float32 x = 1.902 
cdef np.ndarray[np.npy_float32, ndim=2] A = np.zeros((3, 4), dtype=np.float32) 

np.float32_t単に省略形として使用することができるnp.npy_float32typedefあります。