gpt4 book ai didi

python - 用cython创建矩阵的有效方法

转载 作者:行者123 更新时间:2023-11-28 22:00:10 24 4
gpt4 key购买 nike

我有一个为我计算矩阵的函数,但它真的很慢。即使在 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~10000m=1001

最佳答案

尝试:

cdef np.ndarray des = np.zeros([n-m+1,m])

您也可以像对参数 s 所做的那样使其更加具体。您也可以关闭边界检查。查看cython numpy tutorial .

您可能还想创建一个变量:

cdef int m_2 = m/2

并在你有 m/2 的任何地方使用它,因为我不知道 Cython 是否会为你进行优化。

关于python - 用cython创建矩阵的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15369457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com