我有一个为我计算矩阵的函数,但它真的很慢。即使在 cython 中它运行缓慢,所以我想知道是否可以做任何事情来增强下面的代码。
编辑:我已更改或添加
des = np.zeros([n-m+1,m])
to cdef np.ndarray des = np.zeros([n-m+1,m], dtype=DTYPE)
(这比我没有np.empty...
说m/2
我添加了 a快,cdef int m2 = m/2
但这似乎没有任何帮助。
cimport numpy as np
cimport cython
DTYPE = float
ctypedef np.float_t DTYPE_t
@cython.boundscheck(False)
@cython.cdivision(True)
@cython.wraparound(False)
cpdef map4(np.ndarray[DTYPE_t, ndim=1] s, int m):
cdef int n = len(s)
cdef int i
cdef int j
des = np.zeros([n-m+1,m])
for j in xrange(m):
for i in xrange(m/2,n-m/2-1):
des[i-m/2,j] = s[i-j+m/2]
return des, s, m, n
通常n~10000
和m=1001
。