Ciò che confonde è che se si vuole creare un array si utilizzaQual è la differenza tra numpy "identificatori di tipo" e "tipi" in Cython?
chunk = np.array ([[94.,3.],[44.,4.]], dtype=np.float64)
Ma se si vuole definire il tipo all'interno di un riferimento buffer
, si utilizza
cdef func1 (np.ndarray[np.float64_t, ndim=2] A):
print A
notare la differenza tra np.float64
e np.float64_t
.
mie congetture
sto indovinando che un type identifier
è ciò che viene creato in modo esplicito w/il Cython C-like typedef
sintassi
ctypedef np.float64_t dtype_t
Ma la NumPy type
è proprio il tipo di Python <type 'type'>
.
>>> type (np.float64)
<type 'type'>
La documentazione Numpy su dtype
s non mi aiuta. http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html
Ok, così sembra che la maggior parte di {float, int} {32,64} _t sia di tipo C double, estesa a Python. Anche se non riesco a trovare la menzione dei tipi senza "_t", almeno in numpy.pxd – HeyWatchThis
I tipi senza "_t" provengono da "import numpy", non da "cimport numpy". Se questo è fonte di confusione, puoi fare "cimport numpy as cnp" per vedere la differenza. –
Sì, ho letto anche quello, sfogliando [http://cython.readthedocs.org/en/latest/src/tutorial/numpy.html]. Puoi aggiungerlo come risposta e accetterò, o alla fine lo aggiungerò. – HeyWatchThis