思考python方式 - 避免循环

时间:2015-04-08 12:58:47

标签: python loops root

我对Python很陌生。

在下面的代码中:

f中的函数f1创建了一个我想要找到其根的向量。为数据集中的每一行创建此向量。它的大小因数据集的每一行而异,取决于n。

函数f为数据集中的每一行找到向量的根,保留根向量的第二个元素。最后,我总结了我为每一行找到的根向量的第二个元素。

数据集非常庞大,因此循环遍历所有行需要太长时间。

您对如何避免所有这些循环有任何建议吗?似乎有可能只使用向量做所有事情,但我无法弄清楚如何。

变量n是这样的,如果n = 2,则var1和var2不缺失,var3-var5是。如果n = 3,则var1,var2和var3不会丢失,var4和var5都是。

以下是代码:

def f(y):  
    lf = 0  
    for index, row in data.iterrows():  
        end = int(row['n'])  
        end2 = int(row['n'] + 1)  
        rap = [0] * int(row['n'])  
        rap2 = [row['var1'], row['var2'], row['var3'], row['var4'],row['var5']]  
        for k in range(0,end):  
            rap[k]=rap2[k]  
        def f1(x, y):  
            new_list = []  
            a = y[0]  
            b = y[1]  
            c = y[2]  
            for p in range(1, end2):  
                t=p-1  
                new_elem = f2(x[0], a, b, c, x[p], rap[t])  
                new_list.append(new_elem)  
            return new_list  
        x0 = [0.1] * int(row['n']+1)  
        sol = scipy.optimize.root(f1, x0, args=(y,))  
        print sol  
        solp1 = sol.x[1]  
        lf = lf + solp1  
    return lf  

0 个答案:

没有答案