2015-02-24 125 views
0

所以我想平均每600行。我得到一个超出范围的Python错误索引,并且数字没有正确显示。帮帮我?Python错误代码

import numpy as np 

data = np.loadtxt('Y:/Canopy/PSUone.txt', delimiter = ',', skiprows = 0) 
shape = np.shape(data) 
data_you_want = data[:,3] 
daily_averages = list() 

for i,d in enumerate(data_you_want): 
    if (i % 600) == 0: 
     avg_for_day = np.mean(data_you_want[i - 600:i]) 
     daily_averages.append(avg_for_day) 

with open('Y:/Canopy/newPSUone.txt', 'w') as f: 
    f.write('Wind U Direction\n') 
    f.write('------------------\n') 
    for i, d in enumerate(data_you_want): 
     s = '{0:4.3f}\n'. format(daily_averages[i]) 
     f.write(s) 

f.close() 
+1

你的输入文件是怎么样的?更新到你的文章 – Hackaholic 2015-02-24 17:56:58

+0

'data_you_want = data [:,3]'给出错误> TypeError:列表索引必须是整数,而不是元组 – ForceBru 2015-02-24 17:58:23

+0

备注,当i是0时,i %0将是真实的,所以你将平均行-600:0,这可能不是你想要的。 – David 2015-02-24 17:58:34

回答

0

我认为你正在运行到的问题是该位:

for i,d in enumerate(data_you_want): 
    if (i % 600) == 0: 
     avg_for_day = np.mean(data_you_want[i - 600:i]) 
     daily_averages.append(avg_for_day) 

...其次是这样的:

for i, d in enumerate(data_you_want): 
    s = '{0:4.3f}\n'. format(daily_averages[i]) 
    f.write(s) 

因为你只有走的每第600行从data_you_want到平均值为daily_averages,您将有len(data_you_want) // 600元素在daily_averages。如果你迭代data_you_want并尝试采取daily_average[i],那么你将达到i大于daily_averages的长度,并且你会得到一个错误。