这是文件的样子
5.0000E+02 5.23744E-06 0.0006
1.0600E+03 2.15119E-06 0.0023
1.6900E+03 1.83529E-06 0.0035
2.4000E+03 1.76455E-06 0.0044
3.1900E+03 1.78831E-06 0.0050
4.0800E+03 1.86632E-06 0.0056
5.0800E+03 1.91086E-06 0.0061
6.1900E+03 1.97899E-06 0.0066 <--- Get data from here...
7.4300E+03 2.03105E-06 0.0070
8.8400E+03 2.08666E-06 0.0074
1.0400E+04 2.12723E-06 0.0078
1.2200E+04 2.20352E-06 0.0081
1.4100E+04 2.02335E-06 0.0089
1.6400E+04 1.98286E-06 0.0094
1.8900E+04 1.58478E-06 0.0107
2.1700E+04 1.09529E-06 0.0133
2.4900E+04 6.59218E-07 0.0173
2.8500E+04 3.19703E-07 0.0250
3.2500E+04 1.55052E-07 0.0358
3.7000E+04 6.94320E-08 0.0542
4.2100E+04 3.44175E-08 0.0764
4.7800E+04 2.37904E-08 0.0944
5.4200E+04 1.29016E-08 0.1283
6.1400E+04 5.45355E-09 0.1770
6.9500E+04 4.18030E-09 0.2486
7.8700E+04 2.47747E-09 0.2629
8.8900E+04 2.69887E-09 0.2820
1.0100E+05 2.15937E-09 0.4286
1.1300E+05 4.39994E-10 0.7824
1.2800E+05 0.00000E+00 0.0000
1.4400E+05 0.00000E+00 0.0000
1.6300E+05 0.00000E+00 0.0000
1.8300E+05 0.00000E+00 0.0000
2.0700E+05 0.00000E+00 0.0000
2.3300E+05 0.00000E+00 0.0000
2.6300E+05 0.00000E+00 0.0000
2.9600E+05 0.00000E+00 0.0000 <--- ...to here
3.3300E+05 0.00000E+00 0.0000
3.7600E+05 0.00000E+00 0.0000
4.2300E+05 0.00000E+00 0.0000
4.7600E+05 0.00000E+00 0.0000
5.3600E+05 0.00000E+00 0.0000
6.0400E+05 0.00000E+00 0.0000
6.8000E+05 0.00000E+00 0.0000
7.6500E+05 0.00000E+00 0.0000
8.6100E+05 0.00000E+00 0.0000
9.6900E+05 0.00000E+00 0.0000
1.0900E+06 0.00000E+00 0.0000
1.2200E+06 0.00000E+00 0.0000
1.3800E+06 0.00000E+00 0.0000
1.5500E+06 0.00000E+00 0.0000
1.7500E+06 0.00000E+00 0.0000
1.9700E+06 0.00000E+00 0.0000
2.2100E+06 0.00000E+00 0.0000
2.5000E+06 0.00000E+00 0.0000
2.8000E+06 0.00000E+00 0.0000
3.1500E+06 0.00000E+00 0.0000
3.5400E+06 0.00000E+00 0.0000
3.9900E+06 0.00000E+00 0.0000
4.4900E+06 0.00000E+00 0.0000
5.0500E+06 0.00000E+00 0.0000
5.6800E+06 0.00000E+00 0.0000
6.3900E+06 0.00000E+00 0.0000
1.0000E+07 0.00000E+00 0.0000
所以Python脚本会获得这些数据:
6.1900E+03 1.97899E-06 0.0066
7.4300E+03 2.03105E-06 0.0070
8.8400E+03 2.08666E-06 0.0074
1.0400E+04 2.12723E-06 0.0078
1.2200E+04 2.20352E-06 0.0081
1.4100E+04 2.02335E-06 0.0089
1.6400E+04 1.98286E-06 0.0094
1.8900E+04 1.58478E-06 0.0107
2.1700E+04 1.09529E-06 0.0133
2.4900E+04 6.59218E-07 0.0173
2.8500E+04 3.19703E-07 0.0250
3.2500E+04 1.55052E-07 0.0358
3.7000E+04 6.94320E-08 0.0542
4.2100E+04 3.44175E-08 0.0764
4.7800E+04 2.37904E-08 0.0944
5.4200E+04 1.29016E-08 0.1283
6.1400E+04 5.45355E-09 0.1770
6.9500E+04 4.18030E-09 0.2486
7.8700E+04 2.47747E-09 0.2629
8.8900E+04 2.69887E-09 0.2820
1.0100E+05 2.15937E-09 0.4286
1.1300E+05 4.39994E-10 0.7824
1.2800E+05 0.00000E+00 0.0000
1.4400E+05 0.00000E+00 0.0000
1.6300E+05 0.00000E+00 0.0000
1.8300E+05 0.00000E+00 0.0000
2.0700E+05 0.00000E+00 0.0000
2.3300E+05 0.00000E+00 0.0000
2.6300E+05 0.00000E+00 0.0000
2.9600E+05 0.00000E+00 0.0000
然后我需要中心栏的总和。
像这样: (1.97899E-06 + 2.03105E-06 + 2.08666E-06 + ... + 0.00000E + 00)= 1.90994E-05
只有第二列对此问题很重要。
第一列代表时间。 第二列代表一些数据编号。 第三列代表一些随机数。
请帮我找出:((
答案 0 :(得分:2)
首先你需要打开文件。最好的方法是:
with open("myfile.txt","r") as f:
# do stuff with file f here
然后你需要得到单独的行。如果文件不是太大(如非常大),您可以将其全部存储在内存中。
通过调用list(f)
将行作为列表获取,例如。 list_of_file = list(f)
。
然后使用lines_i_want = list_of_file[a:b]
从第a行到第b行获取行。
然后使用centre_column = [float(line.split()[1]) for line in lines_i_want]
获取中心列(作为花车)。
现在使用total = sum(centre_column)
添加它们。
或者,为了简洁而牺牲难以阅读:
with open("myfile.txt") as f:
print(sum(float(i.split()[1]) for i in list(f)[a:b]))
如果文件很大并且无法存储在内存中,那么你应该使用itertools模块中的islice而不是仅仅切片列表:
with open(“myfile.txt”) print(sum(float(line.split()[1])for islice(f,a,b)))
如果你想这样做,请确保在程序顶部加入from itertools import islice
行!
答案 1 :(得分:2)
import numpy
data = numpy.loadtxt('filename.txt')
print(data[7:,1].sum())
我可能会转换索引,在这种情况下,它将是数据[1,7:]。sum()
答案 2 :(得分:0)
首先打开文件并创建一个列表。
with open('filename.txt','rU') as f:
table = f.readlines()
假设您始终标记所需的行,您可以通过
找到边界bounds = [table.index(row) for row in table if len(row.split()) is not 3]
这会查看表格的每一行,并找到您要开始和停止的位置。要获得您想要总结的行:
target_rows = table[bounds[0]:bounds[1]+1]
在bounds [1]上有一个+1,因为你想要包含最后一个条目,并且python中列表拼接的工作方式不包括最后一个条目。要提取第二列:
target_col = [float(row.split()[1]) for row in target_rows]
最后得到总和:
total = sum(target_col)
此外,target_rows指定要输出的行。您可以输出它以提供所需的输出表:
output = [' '.join(row.split()[:3]) for row in target_rows]
答案 3 :(得分:0)
sum([int(s.strip().split()[1]) for s in open('exp.txt').readlines()])
根据字段分隔符更改拆分。 Reference.