0

所以我有一个程序,它获取 .txt 数据(整数集),每 n 个数字(除法)求和,并将结果放入一个新列表中。然后它制作该列表的条形图。

到目前为止,它工作得很好。唯一的问题是我希望它让程序完成所有这些操作,而无需手动输入我希望它进行的分割数:\

我希望它通过让我们说一个循环,它将除以 10、11、12... 到我喜欢的任何数字,然后将它全部放在一个列表中,我最终会得到多个列表,然后我可以转移到excell、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

所以我基本上希望 nsmp 在一个 for 循环中,从一些值到一些值(例如从 10-15、25 间隔步骤中的 20-50 等等)。

那件事可行吗?

还有一种简单的方法可以在 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.py. main另外,包含从句也是一个很好的习惯

def main():
    ....

if __name__ == "__main__"
    main()

如果您正在设计一个工具,您还应该定义命令行参数 -argparse非常适合。然后,您可以轻松地从 shell 脚本中使用它。

于 2013-05-19T16:37:45.993 回答