烘焙第2部分:使用Cython Typed Memoryview进行数学运算

时间:2013-04-17 19:46:03

标签: python performance numpy cython lda

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

0 个答案:

没有答案