使用 Cython 遍历 Numpy 数组

Loop over a Numpy array with Cython

ab为两个numpy.float长度为1024的数组,定义为

cdef numpy.ndarray a
cdef numpy.ndarray b

我注意到:

cdef int i
for i in range(1024):
    b[i] += a[i]

慢得多
b += a 

为什么?

我真的需要能够手动遍历数组。

ab如果告诉Cython数据类型和维数,差异会更小:

cdef numpy.ndarray[np.float64_t, ndim=1] a, b

尽管差异会更小,但您不会击败 b += a,因为这是使用 NumPy 的 SIMD 增强功能(这将取决于您的 CPU 是否支持 SIMD)。