¿Cuál es la diferencia entre "identificadores de tipo" numpy y "tipos" dentro de Cython?
Frecuentes
Visto 3,321 veces
8
Lo que es confuso es que si quieres crear una matriz, usas
chunk = np.array ( [[94.,3.],[44.,4.]], dtype=np.float64)
Pero si desea definir el tipo dentro de un buffer
referencia, tu usas
cdef func1 (np.ndarray[np.float64_t, ndim=2] A):
print A
Note la diferencia entre np.float64
y np.float64_t
.
Mis conjeturas
Supongo que un type identifier
es lo que se crea explícitamente con Cython C-like typedef
sintaxis
ctypedef np.float64_t dtype_t
Pero el tonto type
es solo el pitón <type 'type'>
tipo .
>>> type ( np.float64)
<type 'type'>
La documentación de Numpy en dtype
s no me ayuda. http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html
1 Respuestas
7
en tu código cython, haces:
import numpy as np
cimport numpy as np
la primera línea importa el módulo numpy en el espacio python, pero la segunda línea solo incluye numpy.pxd en el espacio cython.
puede encontrar numpy.pxd en su carpeta de instalación de cython. Define float64_t como:
ctypedef double npy_float64
ctypedef npy_float64 float64_t
Respondido el 13 de junio de 12 a las 04:06
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas python numpy cython or haz tu propia pregunta.
Bien, parece que la mayoría de los {float,int}{32,64}_t son de tipo C double , extendidos a Python. Aunque no puedo encontrar una mención de los tipos sin "_t", al menos en numpy.pxd - Oye, mira esto
Los tipos sin "_t" provienen de "import numpy", no de "cimport numpy". Si esto es confuso, puede hacer "cimport numpy as cnp" para ver la diferencia. - pv.
Sí, acabo de leer eso también, navegando a través de [cython.readthedocs.org/en/latest/src/tutorial/numpy.html] . Puede agregar eso como respuesta y lo aceptaré, o eventualmente lo agregaré. - Oye, mira esto
¿Soy yo o no se puede encontrar el numpy.pxd? ¿La fuente de cython github no parece contenerlo? ah, la documentación está detrás, está aquí -> github.com/cython/cython/blob/master/Cython/Includes/numpy/… - Carro