3

我想创建一个需要在 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

这我可以做任何其他事情,但不能在全球范围内。有没有办法做到这一点?

4

1 回答 1

1

有没有办法做到这一点?

不,正如错误所说,Buffer types only allowed as function local variables.

一种替代方法是使用单片main功能。这实际上只需要缩进所有内容,但这意味着您只能共享这么多。

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

cdef DTYPE_t[:] delay_buffer

应该更快,更清洁且功能不逊色。

于 2014-01-15T11:13:07.333 回答