擅长:python、mysql、java
<p>我相信有一个更优雅的答案,但这是可行的:</p>
<pre><code>#parse data
with open('data.txt') as f:
lines = f.readlines()
alldata = []
kdata = []
for i,line in enumerate(lines):
if len(line) > 1:
if line[0] =='#':
x = int(line.split(' ')[1])
y = int(line.split(' ')[2][:-1])
kdata.append([x,y])
else:
if i !=0:
alldata.append([kval,kdata])
ptr = line.find('k=')+3
kval = int(line[ptr:ptr+1])
kdata=[]
alldata.append([kval,kdata])
#analyse data
for kblock in alldata:
kval = kblock[0]
sumx = sum([x for z in kblock[1:] for (x,y) in z])
sumy = sum([y for z in kblock[1:] for (x,y) in z])
sumxy = sum([x*y for z in kblock[1:] for (x,y) in z])
mean = sumxy/sumy
print('The mean of k-{0} is :{1}'.format(kval,mean))
</code></pre>
<p><em>numpy</em>本应是我的首选,但如果您的数据大小可变,则这将变得更加困难。希望这有帮助。你知道吗</p>