In the tutorial of the Cython documentation, there are cimport and import statements of numpy module:
import numpy as np
cimport numpy as np
I found this convention is quite popular among numpy/cython users.
This looks strange for me because they are both named as np. In which part of the code, imported/cimported np are used? Why cython compiler does not confuse them?
cimport my_module
gives access to C functions or attributes or even sub-modules under my_module
import my_module
gives access to Python functions or attributes or sub-modules under my_module
.
In your case:
cimport numpy as np
gives you access to Numpy C API, where you can declare array buffers, variable types and so on...
And:
import numpy as np
gives you access to NumPy-Python functions, such as np.array
, np.linspace
, etc
Cython internally handles this ambiguity so that the user does not need to use different names.