0

ラインをデータセットに適合させ、いくつかの適合パラメーターを出力するスクリプトを使用しています。フィッターを実行するコマンドは次のようになります。

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 に答える