所以我有一个程序接受.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
所以我基本上喜欢在for循环中使用nsmp,从某些值到某些值(例如在25个间隔步骤中从10-15到20-50,依此类推)。
这件事可行吗?
还有一种在python中导出结果的简单方法吗?我搜查了所有内容但发现没有像loadtxt
那样容易。
这是.txt文件:https://dl.dropboxusercontent.com/u/55620972/mion-090513-1.txt
答案 0 :(得分: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脚本中轻松使用它。