在官方的文檔中,http://docs.cython.org/src/tutorial/numpy.html
基本使用方法如下:
基本使用方法如下:
cimport numpy as cnp
ctypedef cnp.float64_t FLOAT_t
@cython.wraparound(False)
@cython.boundscheck(False)
def myfunc(cnp.ndarray[FLOAT_t, ndim=2] f):
pass
- numpy所定義的c version data type都是python version後面加_t,支援的type如連結。
- wraparound(False)關閉負值索引
- boundcheck(False)加速array元素的存取,但是會無法使用負值的index且不做bound check。
- 其它可用的選項可查詢:compiler directives
cnp.ndarray[FLOAT_t, ndim=2]將不使用python的慢速索引,而直接使用c的buffer。 - 如果在function中,array沒有使用到numpy的broadcasting或是相關的函式,而只有單純的存取元素時,可使用memoryview的方式定義變數。