将在for循环中创建的数组设置为作为列表一部分的字符串

时间:2016-01-12 13:57:23

标签: python arrays string list python-3.x

我创建了一个for循环,其中循环中的最终结果是一个名为dataNew的数组,如下所示:

flatID = [flat1, flat2, flat3, flat4, flat5, flat6, flat7, flat8, flat9,  flat10, flat11, flat12, flat13, flat14, flat15]

oscimg = ["none"]*15

for i in range(0,14):
  fakeBias = flatID[i]
  #Biascorrection?
  fakeData = np.zeros((636.,2400 ), dtype = "float")
  fakeData.shape
  biasPerRow=np.median(fakeBias[:,598:636],axis=1)
  biasPerRow.shape

  dataNew=fakeData[0:598,:]
  dataNew.shape

  for i in range(635):
    dataNew[ : , i ] -= biasPerRow[ i ]
  oscimg[i] = dataNew

我正在处理各种拟合文件,其中fit文件中的每个数据都设置为flatID列表中的元素。

我的问题在于将dataNew数组设置为字符串或列表元素,其中对于循环的每次迭代,我可以将dataNew数组的最终值设置为一个字符串,该字符串随每次迭代而变化,以便最终结果将是15个不同的dataNew数组变体被设置为我可以使用的字符串。但是,在使用oscimg [i]设置字符串元素的意义上我错了,因为我返回了以下错误。

IndexError                                Traceback (most recent call last)
/usr/lib/python2.7/dist-packages/IPython/utils/py3compat.pyc in execfile(fname, *where)
    202             else:
    203                 filename = fname
--> 204             __builtin__.execfile(filename, *where)

/home/*****/Python/Assignment/Ag3.py in <module>()
    110   for i in range(635):
    111     dataNew[ : , i ] -= biasPerRow[ i ]
--> 112   oscimg[i] = dataNew
    113 
    114 # Example 11.3: Read in dark frames, bias subtract and createmaster darks

IndexError: list assignment index out of range

我不知道如何从这里开始,所以任何意见都会非常感激。

1 个答案:

答案 0 :(得分:2)

for i in range(0,14):
  #...
  for i in range(635):
    dataNew[ : , i ] -= biasPerRow[ i ]
  oscimg[i] = dataNew

您正在使用i作为两个for循环的变量。第二行将覆盖第一行的值,因此最后一行将评估为oscimg[634] = dataNew

为循环使用不同的名称。

for i in range(0,14):
  #...
  for j in range(635):