ラインをデータセットに適合させ、いくつかの適合パラメーターを出力するスクリプトを使用しています。フィッターを実行するコマンドは次のようになります。
fitter = Fitter(hdf2.root.OM01, plot=False)
.
ファイルの適合パラメータを出力するように、このコマンドをループしたいと思います'hdf2.01', 'hdf2.02', ... 'hdf2.50'
このコードをループするにはどうすればよいですか?
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)