行列を計算する関数がありますが、非常に遅いです。cython でも動作が遅いので、以下のコードを強化するために何かできないかと思っていました。
編集:変更または追加しました
des = np.zeros([n-m+1,m])
にcdef np.ndarray des = np.zeros([n-m+1,m], dtype=DTYPE)
(これは、追加したnp.empty...
と言うよりも高速ですが、何も役に立たなかったようです。m/2
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
.