【问题标题】:for loop in for loop sumation is overwriting data values pythonfor循环求和中的for循环正在覆盖数据值python
【发布时间】:2019-05-06 20:39:09
【问题描述】:

我有一个关于我的实验数据评估代码的问题: 在第一个 for 循环中,我打开一个又一个要分析的文件。在这个for循环中,所以在一个文件中,我想创建第二个for循环来评估一些特定的参数进行评估。当我只为一个文件执行此操作时,参数是正确的,但是当我遍历所有文件时,看起来在第二个 for 循环中这些参数被总结了。所以正常值应该在 ar= 0.0001 的范围内,因为一个文件可以正常工作。当我遍历文件时,第一个得到 0.0001,第二个得到 0.0002,第三个得到 0.0003,依此类推。

更新:
好的,这是代码的全部部分。对于我想要的每个文件,在拟合数据以获得文件内第一列 (x[j]) 中的两个数据点之间的差异的总和乘以第二列中的对应值 (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

【问题讨论】:

  • 什么是DIFFS1x 是什么? y 是什么? diffs 是什么?请提供minimal reproducible example
  • 这里还是没有提供相关部分的代码。如果问题出在diffs 的求和结果上,我们需要查看与diffs 相关的所有代码。
  • 我现在在新评论中提供了它;)

标签: python for-loop sum overwrite


【解决方案1】:

如果你正在处理文件(例如打开它们),我建议使用 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 

【讨论】:

    猜你喜欢
    • 2016-07-17
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多