|
|
|
|
 各位帮忙看看我的函数应该怎么改 - happyhappy [ 2005-12-12 11:26 | 7,752 byte(s)]
 Re: 各位帮忙看看我的函数应该怎么改 - passworld [ 2005-12-13 12:35 | 616 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
import sys,string,math
fr=open("e:/zwxdata/200509/2005_09_01.txt")
fw=open("e:/zwxdata/2out2005_09_01.txt","w")
line=0
c1=[]
c2=[]
count1=1
count2=1
sum1=0
sum2=0
avarage1=1
average2=1
for i in fr.readlines():
line=line+1
for a1 in range(1,60):
if line==a1:
line21=str.split(i)
line31=float(str(line21[4]))
c1 =[line31]
for m1 in c1:
count1+=1
sum1=sum1+m1
average1=sum1/count1
for a2 in range(60,120):
if line==a2:
line22=str.split(i)
line32=float(str(line22[4]))
c2 =[line32]
for m2 in c2:
sum2=sum2+m2
count2+=1
average2=sum2/count2
print average1
print average2
fr.close()
fw.close()
我这个文件要做第4列每隔60个数的平均值,这里只作了2个,可以运行了.但要做成函数,帮我看看为啥算出来的不是平均值,而是文件里的原数
import sys,string,math
fr=open("e:/zwxdata/200509/2005_09_01.txt")
fw=open("e:/zwxdata/42out2005_09_01.txt","w")
line=0
count=1
c=[]
av=0.0
sum=0.0
def average():
for i in fr.readlines():
line+=1
if line==a:
line2=str.split(i)
line3=float(str(line2[4]))
c =[line3]
for m in c:
count=count+1
sum=sum+m
av=sum/count
return av
print av
for a in range(1,60):
ss=average()
文件内容如下:
2005-09-01 05:01:00 .103 .086 .091
2005-09-01 05:02:00 .103 .077 .09
2005-09-01 05:03:00 .103 .086 .095
2005-09-01 05:04:00 .103 .086 .09
2005-09-01 05:05:00 .095 .077 .09
2005-09-01 05:06:00 .103 .086 .092
2005-09-01 05:07:00 .103 .086 .092
2005-09-01 05:08:00 .103 .077 .092
2005-09-01 05:09:00 .095 .077 .087
2005-09-01 05:10:00 .103 .077 .09
2005-09-01 05:11:00 .103 .077 .09
2005-09-01 05:12:00 .103 .086 .092
2005-09-01 05:13:00 .103 .077 .093
2005-09-01 05:14:00 .103 .086 .092
2005-09-01 05:15:00 .095 .077 .089
2005-09-01 05:16:00 .103 .086 .093
2005-09-01 05:17:00 .095 .077 .089
2005-09-01 05:18:00 .095 .077 .092
2005-09-01 05:19:00 .095 .077 .089
2005-09-01 05:20:00 .103 .086 .095
2005-09-01 05:21:00 .103 .086 .092
2005-09-01 05:22:00 .103 .086 .092
2005-09-01 05:23:00 .103 .086 .09
2005-09-01 05:24:00 .103 .086 .096
2005-09-01 05:25:00 .103 .077 .092
2005-09-01 05:26:00 .103 .086 .095
2005-09-01 05:27:00 .103 .086 .095
2005-09-01 05:28:00 .103 .086 .095
2005-09-01 05:29:00 .112 .095 .102
2005-09-01 05:30:00 .112 .086 .103
2005-09-01 05:31:00 .12 .095 .105
2005-09-01 05:32:00 .12 .086 .103
2005-09-01 05:33:00 .12 .095 .109
2005-09-01 05:34:00 .12 .103 .113
2005-09-01 05:35:00 .129 .103 .117
2005-09-01 05:36:00 .129 .112 .122
2005-09-01 05:37:00 .138 .12 .129
2005-09-01 05:38:00 .146 .129 .135
2005-09-01 05:39:00 .146 .129 .139
2005-09-01 05:40:00 .155 .138 .148
2005-09-01 05:41:00 .163 .146 .155
2005-09-01 05:42:00 .18 .163 .17
2005-09-01 05:43:00 .189 .155 .178
2005-09-01 05:44:00 .206 .172 .186
2005-09-01 05:45:00 .215 .189 .201
2005-09-01 05:46:00 .223 .206 .213
2005-09-01 05:47:00 .232 .215 .225
2005-09-01 05:48:00 .258 .241 .244
2005-09-01 05:49:00 .275 .249 .256
2005-09-01 05:50:00 .284 .258 .272
2005-09-01 05:51:00 .292 .284 .288
2005-09-01 05:52:00 .318 .301 .309
2005-09-01 05:53:00 .335 .309 .328
2005-09-01 05:54:00 .352 .335 .345
2005-09-01 05:55:00 .387 .361 .372
2005-09-01 05:56:00 .421 .378 .395
2005-09-01 05:57:00 .43 .395 .415
2005-09-01 05:58:00 .464 .43 .447
2005-09-01 05:59:00 .481 .455 .468
2005-09-01 06:00:00 .524 .481 .497
2005-09-01 06:01:00 .541 .498 .523
2005-09-01 06:02:00 .559 .524 .55
2005-09-01 06:03:00 .593 .559 .579
2005-09-01 06:04:00 .619 .602 .61
2005-09-01 06:05:00 .653 .627 .643
2005-09-01 06:06:00 .688 .662 .676
2005-09-01 06:07:00 .722 .688 .709
2005-09-01 06:08:00 .765 .731 .741
2005-09-01 06:09:00 .791 .756 .773
2005-09-01 06:10:00 .825 .791 .812
2005-09-01 06:11:00 .859 .825 .847
2005-09-01 06:12:00 .894 .868 .882
2005-09-01 06:13:00 .937 .902 .921
2005-09-01 06:14:00 .98 .928 .953
2005-09-01 06:15:00 1.014 .971 .996
2005-09-01 06:16:00 1.066 1.014 1.034
2005-09-01 06:17:00 1.1 1.057 1.073
2005-09-01 06:18:00 1.126 1.091 1.112
2005-09-01 06:19:00 1.169 1.126 1.152
2005-09-01 06:20:00 1.212 1.169 1.192
2005-09-01 06:21:00 1.255 1.22 1.235
2005-09-01 06:22:00 1.289 1.246 1.272
2005-09-01 06:23:00 1.332 1.298 1.319
2005-09-01 06:24:00 1.384 1.341 1.368
2005-09-01 06:25:00 1.418 1.392 1.411
2005-09-01 06:26:00 1.47 1.444 1.461
2005-09-01 06:27:00 1.53 1.478 1.51
2005-09-01 06:28:00 1.59 1.547 1.567
2005-09-01 06:29:00 1.642 1.599 1.621
2005-09-01 06:30:00 1.702 1.659 1.684
2005-09-01 06:31:00 1.745 1.71 1.729
2005-09-01 06:32:00 1.796 1.762 1.775
2005-09-01 06:33:00 1.839 1.796 1.822
2005-09-01 06:34:00 1.874 1.848 1.864
2005-09-01 06:35:00 1.925 1.891 1.908
2005-09-01 06:36:00 1.994 1.917 1.957
2005-09-01 06:37:00 2.037 1.985 2.011
2005-09-01 06:38:00 2.097 2.037 2.064
2005-09-01 06:39:00 2.14 2.106 2.117
2005-09-01 06:40:00 2.183 2.14 2.164
2005-09-01 06:41:00 2.217 2.183 2.204
2005-09-01 06:42:00 2.26 2.235 2.247
2005-09-01 06:43:00 2.32 2.269 2.292
2005-09-01 06:44:00 2.372 2.329 2.346
2005-09-01 06:45:00 2.415 2.363 2.391
2005-09-01 06:46:00 2.492 2.432 2.464
2005-09-01 06:47:00 2.561 2.501 2.527
2005-09-01 06:48:00 2.595 2.561 2.58
2005-09-01 06:49:00 2.638 2.604 2.621
2005-09-01 06:50:00 2.699 2.647 2.667
2005-09-01 06:51:00 2.742 2.699 2.724
2005-09-01 06:52:00 2.802 2.75 2.777
2005-09-01 06:53:00 2.828 2.793 2.813
2005-09-01 06:54:00 2.879 2.836 2.862
2005-09-01 06:55:00 2.939 2.896 2.911
2005-09-01 06:56:00 2.982 2.922 2.955
2005-09-01 06:57:00 3.051 2.999 3.014
2005-09-01 06:58:00 3.085 3.025 3.062
2005-09-01 06:59:00 3.128 3.094 3.113
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
60行一平均?先积累到一个sum,然后数到60的倍数,作一个平均,sum 归零,继续积累:
def average(lines):
sum=0
count = 0
result = []
for i in lines:
# 找出第四列....
# ....
sum += field4
count += 1
# 到60做一个平均,重新开始
if not count % 60:
result.append(sum/count)
sum = 0
# 最后剩下不到60行的再平均
if sum:
result.append(sum/(count % 60))
return result
|
|
|
----
|
|
[Original]
[Print]
[Top]
|
|
|