如何在cython中声明全局numpy.ndarray?

时间:2012-08-31 08:59:17

标签: python numpy global-variables cython

我想创建一个信号处理算法,需要在numpy数组中保持一些内部状态。

为了速度,我在cython中编码并将状态声明为这样的全局变量:

import numpy as np
cimport numpy  as np
cdef np.ndarray delay_buffer

然而,我真正想做的是:

import numpy as np
cimport numpy as np
DTYPE = np.float32
ctypedef np.float32_t DTYPE_t
cdef np.ndarray[DTYPE_t] delay_buffer

我可以做任何其他事情,但不是在全球范围内。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

  

有没有办法实现这个目标?

没有。正如错误所说,Buffer types only allowed as function local variables

一种替代方法是使用单片main函数。这真的只需缩进所有内容,但这意味着你只能分享这么多。

我最喜欢的选择是升级到使用内存视图的现代方法:

cdef DTYPE_t[:] delay_buffer

应该更快,更清洁,更强大。