我对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