2016-01-04 9 views
6

Non riesco a capire quale sia la differenza tra numpy. {Typename}, numpy.npy_ {typename} e numpy. {Typename} _t quando li uso dal codice Cython?Tipi di Numpy per utenti Cython

cioè qual è la differenza in questi tipi:

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

np.float32 
np.npy_float32 
np.float32_t 

quanto mi risulta ora: primo tipo è dinamico, cioè Cython genererà codice per rilevare dimensioni di tale tipo in fase di esecuzione. Altri due tipi sono statici, cioè il codice che lo utilizza verrà compilato con dimensioni predefinite di ogni tipo. Per favore correggimi.

collegamento supplementare: https://docs.scipy.org/doc/numpy/reference/c-api.dtype.html#c-type-names

risposta

6

np.float32 è TypeDescriptor di NumPy, che è un oggetto Python che può essere interrogato e passato al NumPy per costruire matrici proprio come in Python.

np.npy_float32 è un tipo C, che può essere utilizzato ovunque sia necessario un tipo C, ad es.

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 è semplicemente un typedef di np.npy_float32 che può essere utilizzato come abbreviazione.