0

我正在使用一个适合数据集的行并输出一些适合参数的脚本。运行 fitter 的命令如下所示:

fitter = Fitter(hdf2.root.OM01, plot=False).

我想循环这个命令,以便它输出文件的拟合参数'hdf2.01', 'hdf2.02', ... 'hdf2.50'

我怎样才能循环这段代码?

4

1 回答 1

3

如果我理解正确,您有一个具有编号属性的对象(OM01通过OM50)。您可以使用循环生成这些属性名称,并使用getattr从对象中检索它们。

如果您的对象被称为root,就像在您的评论中一样,您可以执行以下操作:

parameters = []
for i in range(1, 51):
    parameter = getattr(root, 'OM%02d' % i)
    parameters.append(parameter)

# now all of your parameters are in the parameter array

或者,如果你喜欢列表推导(谁不喜欢):

parameters = [getattr(root, 'OM%02d' % i) for i in range(1, 51)]

我想您需要将这些参数与 一起使用Fitter,您可以执行以下操作:

results = []
for i in range(1, 51):
    parameter = getattr(hdf2.root, 'OM%02d' % i)
    result = Fitter(parameter, plot=False)
    results.append(result)

编辑:如果您的文件只有名称“hdf2.root.OM01”、“hdf2.root.OM02”等,您可以这样做:

results = []
for i in range(1, 51):
    filename = 'hdf2.root.OM%02d' % i
    result = Fitter(filename, plot=False)
    results.append(result)
于 2012-04-19T19:35:08.750 回答