0

support_codend numpy 配列と対話する関数を定義するために使用したいと思います。code引数の内部では、FOO3(i, j, k)表記法は機能しますが、その中でのみ機能し、support_code.Something では機能しません:

import scipy
import scipy.weave
code = '''return_val = f(1);'''
support_code = '''int f(int i) {
    return FOO3(i, i, i);
}''''
foo = scipy.arange(3**3).reshape(3,3,3)
print(scipy.weave.inline(code, ['foo'], support_code=support_code))
4

1 に答える 1

0

サポート コードの概念は、主にいくつかのインクルードを行うことです。あなたの場合、関数は次のようになるはずです。

import scipy
import scipy.weave

def foofunc(i):
    foo = scipy.arange(3**3).reshape(3,3,3)
    code = '''#do something lengthy with foo and maybe i'''
    scipy.weave.inline(code, ['foo', 'i']))
    return foo[i,i,i]

あなたがやろうとしていることのために、サポートコードはまったく必要ありません。Python ではなく C で関数 return を実行しようとすると、速度も向上しません。関数呼び出しのコストと比較して、配列アクセスも無視できます。weave がいつ、どのように役立つか、コードをスピードアップするには、こちらをご覧ください。

于 2013-02-20T02:33:56.403 に答える