0

我想用来support_code定义与 nd 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]

对于您正在尝试做的事情,您根本不需要支持代码。您也没有任何速度改进,当您尝试在 C 中执行函数返回而不是在 python 中执行此操作时,与函数调用的成本相比,数组访问也是可以忽略的。为了更好地了解 weave 何时以及如何帮助您加速您的代码,请查看此处

于 2013-02-20T02:33:56.403 回答