在Cython加速forloop

2024-04-23 15:27:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我还是刚刚开始了解Cython是如何工作的。 这个片段显示了我程序中的一个慢部分,我想知道这个for循环是否可以改进。 它看起来仍然很像原始的Numpy版本,但是我添加了cdef和int的转换。在

cdef Py_ssize_t i, j
cdef double ii, jj

for ii in np.arange(startx, endx+1, 0.1):
    for jj in np.arange(starty, endy+1, 0.1):
        if my_condition(ii, jj):
            i = <int>ii
            j = <int>jj
            data[i, j] += 1

你有什么建议吗?在


Tags: inpy程序版本numpyfornpcython
1条回答
网友
1楼 · 发布于 2024-04-23 15:27:49

研究中的cython示例

https://docs.scipy.org/doc/numpy/reference/arrays.nditer.html

它使用nditer来分发数组元素。在

以及

https://cython.readthedocs.io/en/stable/src/userguide/memoryviews.html

它演示了如何使用memoryviews(和C数组)快速迭代这些值。在

无论哪种方式,您的目标都是让cython直接访问数据缓冲区,而不是通过numpy函数。在

相关问题 更多 >