我似乎无法做一些简单的事情,比如在存储器视图中存储的值数组中添加值。我知道这不是一个打字的内存视图应该做的。但是将内存视图转换回np.array比放牧猫只要慢。
当我尝试编写一个cdef函数时:
cdef double[::1] _add(self,double[::1] arr,double val):
cdef double[::1] newarr
cdef int i, n
#n = sizeof(arr)/sizeof(arr[0])
newarr = np.empty(5)
for i in xrange(n):
newarr[i] = arr[i] + val
return newarr
我收到的错误表明内存视图不是连续的。
“ValueError:缓冲区和内存视图在同一维度上不连续。”
如果传递的内存视图不是已切片的内存视图,这实际上会起作用。但它增加了10秒的过程!