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

1つの代替方法は、モノリシックmain関数を使用することです。これは実際にはすべてをインデントするだけですが、共有できるのはそれほど多くないことを意味します。

私のお気に入りの代替手段は、memoryviewsを使用する最新の方法にアップグレードすることです。

cdef DTYPE_t[:] delay_buffer

より速く、よりクリーンで、それほど強力ではないはずです。

于 2014-01-15T11:13:07.333 に答える