我使用numpexpr来处理大型数组的快速数学计算,但如果该数组的大小小于CPU缓存,则使用Cython编写简单的数组数学代码会更快,尤其是在多次调用函数时。
问题在于,如何在Cython中使用数组,或更明确地说:是否有一个直接的接口来连接Python的array.array类型?我想做的是这样的事情(一个简单的例子):
问题在于,如何在Cython中使用数组,或更明确地说:是否有一个直接的接口来连接Python的array.array类型?我想做的是这样的事情(一个简单的例子):
cpdef array[double] running_sum(array[double] arr):
cdef int i
cdef int n = len(arr)
cdef array[double] out = new_array_zeros(1.0, n)
... # some error checks
out[0] = arr[0]
for i in xrange(1,n-1):
out[i] = out[i-1] + arr[i]
return(out)
我最初尝试使用Cython numpy包装器并使用ndarrays,但对于小的1D数组来说,创建它们似乎非常昂贵,与使用malloc创建C数组相比(但内存处理变得麻烦)。
谢谢!