我似乎无法做一些简单的事情,比如将值添加到存储在内存视图中的值数组中。我知道这不是类型化的内存视图应该做的。但是将内存视图转换回 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 秒的过程!