使用Cython循环Numpy数组

时间:2015-05-14 15:28:04

标签: python arrays numpy cython

ab成为长度为1024的numpy.float个数组,用

定义
cdef numpy.ndarray a
cdef numpy.ndarray b

我注意到:

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

比以下慢得多:

b += a 

为什么?

我真的需要能够在数组上手动循环。

1 个答案:

答案 0 :(得分:3)

如果您告诉Cython数据类型以及ab的维度数量,差异会更小:

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

虽然差异会更小,但你不会超过b += a,因为这是使用NumPy的SIMD提升功能(根据你的CPU是否支持SIMD,它会起作用)。