2016-01-04 77 views
6

我不太明白numpy。{typename},numpy.npy_ {typename}和numpy。{typename} _t之間的區別是什麼,當我從Cython代碼使用它們時?Cython用戶的Numpy類型

即就是在這些類型的區別:

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

np.float32 
np.npy_float32 
np.float32_t 

正如我現在理解:第一種類型是動態的,即用Cython會產生一些代碼在運行時檢測該類型的大小。其他兩種類型是靜態的,即使用它的代碼將被編譯爲每種類型的預定義大小。請糾正我。

附加鏈接:https://docs.scipy.org/doc/numpy/reference/c-api.dtype.html#c-type-names

回答

6

np.float32是NumPy的的TypeDescriptor,這是可以被查詢並傳遞給NumPy的構建陣列,正如在Python Python對象。

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_float32一個typedef可以用來作爲簡寫。