Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python scipy weave在这个for循环中是如何工作的?_Python_Python 3.x_Scipy - Fatal编程技术网

Python scipy weave在这个for循环中是如何工作的?

Python scipy weave在这个for循环中是如何工作的?,python,python-3.x,scipy,Python,Python 3.x,Scipy,我正试图重写这个函数。我知道weave用于在python中执行C/C++代码,但我不明白如何从weave.inline(expr,[“I”,“iter”,“M”])行将值传递给这段C代码。有人能解释一下这是怎么回事吗?我正试图重写这段代码,以便在Python3.x中运行它。我的意思是这些值I、M和iter传递到哪里?我在C代码中没有看到任何具有这些名称的值 def _thinningIteration(im, iter): I, M = im, np.zeros(im.shape, np

我正试图重写这个函数。我知道
weave
用于在python中执行C/C++代码,但我不明白如何从
weave.inline(expr,[“I”,“iter”,“M”])行将值传递给这段C代码。有人能解释一下这是怎么回事吗?我正试图重写这段代码,以便在Python3.x中运行它。我的意思是这些值
I
M
iter
传递到哪里?我在C代码中没有看到任何具有这些名称的值

def _thinningIteration(im, iter):
    I, M = im, np.zeros(im.shape, np.uint8)
    expr = """
    for (int i = 1; i < NI[0]-1; i++) {
        for (int j = 1; j < NI[1]-1; j++) {
            int p2 = I2(i-1, j);
            int p3 = I2(i-1, j+1);
            int p4 = I2(i, j+1);
            int p5 = I2(i+1, j+1);
            int p6 = I2(i+1, j);
            int p7 = I2(i+1, j-1);
            int p8 = I2(i, j-1);
            int p9 = I2(i-1, j-1);
            int A  = (p2 == 0 && p3 == 1) + (p3 == 0 && p4 == 1) +
                     (p4 == 0 && p5 == 1) + (p5 == 0 && p6 == 1) +
                     (p6 == 0 && p7 == 1) + (p7 == 0 && p8 == 1) +
                     (p8 == 0 && p9 == 1) + (p9 == 0 && p2 == 1);
            int B  = p2 + p3 + p4 + p5 + p6 + p7 + p8 + p9;
            int m1 = iter == 0 ? (p2 * p4 * p6) : (p2 * p4 * p8);
            int m2 = iter == 0 ? (p4 * p6 * p8) : (p2 * p6 * p8);
            if (A == 1 && B >= 2 && B <= 6 && m1 == 0 && m2 == 0) {
                M2(i,j) = 1;
            }
        }
    } 
    """

    weave.inline(expr, ["I", "iter", "M"])
    return (I & ~M)
def稀释(im,iter):
一、 M=im,np.zero(im.shape,np.uint8)
expr=”“”
对于(int i=1;i=2&&B