设a
和b
是两个长度为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
为什么?
我真的需要能够手动循环数组。
最佳答案
如果您告诉 Cython a
和 b
的数据类型和维数,差异会更小:
cdef numpy.ndarray[np.float64_t, ndim=1] a, b
尽管差异会更小,但您不会击败 b += a
,因为这是使用 NumPy 的 SIMD 增强函数(其执行情况取决于您的 CPU 是否支持 SIMD)。
关于python - 使用 Cython 循环 Numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30241209/