0

したがって、.txt データ (整数のセット) を取得し、n 個の数値 (除算) ごとに合計を作成し、その結果を新しいリストに入れるプログラムがあります。そして、そのリストの棒グラフを作成します。

これまでのところ、問題なく動作しています。唯一の問題は、作成したい分割数を手動で入力することなく、プログラムにこれらすべてを実行させたいことです:\

10、11、12... を好きな数に分割してから、すべてをリストに入れて、複数のリストになってしまうループを例に挙げてみましょう。 、その後、Excel、Origin、またはその他のプログラムに転送して、そこで分析を行うことができます。

プロット部分を除いたプログラムと、これについてすでに質問したいくつかの追加事項を示します。

# -*- coding: cp1250 -*-
from __future__ import division
from numpy import *
from matplotlib import rc
from matplotlib.pyplot import *
import numpy as np
import matplotlib.pyplot as plt


data = loadtxt("mion-090513-1.txt", int)

nuz = len(data)
nsmp = 10
duz = int(nuz/nsmp)

L = []

ukupni_broj=sum(data)

#Summed values calculation#
for i1 in range(0,nsmp):
    suma = 0
    for i2 in range(0,duz):
        suma += data[i1*duz+i2]
    L.append(suma)

print L

print 'Bin number is', len(L)

print 'Total event number is', ukupni_broj

したがって、基本的には、いくつかの値からいくつかの値へ (たとえば、25 間隔のステップで 10-15、20-50 など)、for ループで nsmp を使用したいと考えています。

それは実行可能ですか?

また、Pythonで結果をエクスポートする簡単な方法はありますか? あちこち検索しましたが、 のような簡単なものは見つかりませんでしたloadtxt

.txt ファイルは次のとおりです。https://dl.dropboxusercontent.com/u/55620972/mion-090513-1.txt

4

1 に答える 1

1

プログラムを簡単に自動化して再利用できるようにするために、いくつかのことを行うことができます。

コア機能 (計算など) を実行から分離します。計算を別のモジュールに入れて、「メイン」スクリプトから実行できます。

# my_processing.py
def process_file(filename, divisions):
   ...

# process_all.py:
import my_processing
filename = "..."
divisions = [10, 20, 100]
my_processing.process_file(filename, divisions)

このように再利用できますmy_processing.pymainまた、句を含めることは非常に良い習慣です

def main():
    ....

if __name__ == "__main__"
    main()

ツールを設計している場合は、コマンド ライン引数も定義する必要がありますargparse。これは最適です。その後、シェルスクリプトから簡単に使用できます。

于 2013-05-19T16:37:45.993 に答える