我还是刚刚开始了解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
你有什么建议吗?在
研究中的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函数。在
相关问题 更多 >
编程相关推荐