What is the difference between numpy "type identifiers" and "types" within Cython?
cython, numpy, python
Solution
in your cython code, you do:
import numpy as np
cimport numpy as np
the first line import numpy module in python space, but the second line just include numpy.pxd in cython space.
you can found numpy.pxd in you cython install folder. It define float64_t as:
ctypedef double npy_float64
ctypedef npy_float64 float64_t
Problem
What is confusing is that if you want to create an array you use ``` chunk = np.array ( [[94.,3.],[44.,4.]], dtype=np.float64) ``` But if you want to define the type inside a `buffer` reference , you use ``` cdef func1 (np.ndarray[np.float64_t, ndim=2] A): print A ``` Notice the difference between `np.float64` and `np.float64_t` . My Guesses I am guessing that a `type identifier` is what's created explicitly w/ the Cython C-like `typedef` syntax ``` ctypedef np.float64_t dtype_t ``` But the numpy `type` is just the Python `<type 'type'>` type . ``` >>> type ( np.float64) <type 'type'> ``` The Numpy documentation on `dtype`s doesn't help me. http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html