for循环for for循环求和是覆盖数据值python

时间:2018-12-05 09:58:10

标签: python for-loop sum overwrite

我有一个问题需要我的代码来对实验进行数据评估: 在第一个for循环中,我正在打开要分析的文件。在此for循环中,因此在一个文件中,我想创建第二个for循环以评估一些特定的参数进行评估。当我仅对一个文件执行此操作时,参数是正确的,但是当我遍历所有文件时,看起来在第二个for循环中这些参数已汇总。因此对于一个文件来说,正常值应该在ar = 0.0001的范围内。当我遍历文件时,第一个文件获得0.0001,第二个文件获得0.0002,第三个文件获得0.0003,等等。

更新
好的,所以这是代码的整个部分。对于我想要的每个文件,在拟合数据后获得文件内第一列(x [j])中两个数据点之差的总和乘以第二列n(y [j])中对应的值(每个文件)包含两列,长度为720个数据点),然后应将其结果存储在AR中的每个文件中。

def sum_list(l):
  sum = 0
  for k in l:
     sum += k
  return sum

INV= []
DIFFS= []
AR= []

for i in range(0,len(fnames)):

data= np.loadtxt(fnames[i])
x= data[:,0]
y=data[:,1]




gmod=lm.Model(linmod)
result= gmod.fit(y, x=x, p=0.003, bg=0.001)
plt.plot(x, y)
plt.plot(x, result.best_fit, 'r-')
plt.show()             

print result.best_values['bg']

print result.best_values['p']
p= result.best_values['p']
bg1= result.best_values['bg']                    


for j in range(0, 719):
    diffs = ((x[j+1]- x[j])*y[j])
    DIFFS.append(diffs)

ar= sum_list(DIFFS)
AR.append(ar)


inr= (x[0]-bg1)*(y[0]**3)/3 + ar
INV[i]= inr

1 个答案:

答案 0 :(得分:0)

如果您正在处理文件(例如,打开文件),我建议使用os模块,也许像这样的结构可以帮助您避免嵌套的for循环:

for root,dirs,files in os.walk(os.getcwd()):
    for i in files:
      with open(os.path.join(root,i)) as f:
              #do your summation