1

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

4

0 回答 0