.pyx
如果我在数组创建期间定义数组元素( ),我不明白为什么 Cython 需要更多 Python 调用来编译我的文件#-1-
。
对于元素pos1
和pos2
,PyFloat_FromDouble
被调用四次,每个变量调用两次,但是如果我创建一个空数组或零数组并在之后更改元素 ( #-2-
),则不使用此函数。
import cython
import numpy as np
cimport numpy as np
from libc.math cimport sin
from libc.math cimport cos
@cython.boundcheck(False)
@cython.binding(False)
@cython.wraparound(False)
cpdef np.ndarray[np.float64_t, ndim = 2] mat (double alfa):
cdef double pos1 = cos(alfa * 0.01745)
cdef double pos2 = sin(alfa * 0.01745)
cdef np.ndarray[np.float64_t, ndim = 2] mat_ret
#-1-
mat_ret = np.array([[pos1, pos2, 0.0],
[pos1, pos2, 0.0],
[ 0.0, 0.0, 0.0]], dtype = np.float64)
#-2-
mat_ret = np.zeros((3,3), dtype = np.float64)
mat_ret[0,0] = pos1
mat_ret[0,1] = pos2
mat_ret[1,0] = pos1
mat_ret[1,1] = pos2
return mat_ret
我正在使用 Python 2.7.13、NumPy 1.13.1 和 Cython 0.25.2