我有一个数据集,其中包含20年的月平均值,其数量为nxy数组(1x240)。我试图编写一个功能来吐出年度平均值。我设法做了(我相信),使用for循环,但是当我将完全相同的代码粘贴到函数中时,它只给出了应该是20个值的第一个。
def yearlymean_gm(gm_data):
data= np.load(gm_data)
for i in range (0,20):
average= data[i*12:i*12+12].sum()/12
print average
return average
gm_data是文件的名称。
当我手动输入
时data= np.load(gm_data)
for i in range (0,20):
average= data[i*12:i*12+12].sum()/12
print average
return average
它成功读出了20个值。我很确定我不太了解for循环在函数上下文中是如何工作的。任何解释(以及修复,如果可能的话)都会很棒。
其次,我希望将这些值输入一个numpy数组。我试过了
def yearlymean_gm(gm_data):
data= np.load(gm_data)
average = np.zeroes(20)
for i in range (0,20):
average[i]= data[i*12:i*12+12].sum()/12
print average
return average
但这给了我一个漫长而古怪的清单。对此的帮助也很酷。谢谢!
答案 0 :(得分:5)
为什么不完全避免使用“for”循环?
def yearlymean_gm(gm_data):
data = np.load(gm_data)
data = data.reshape((12, 20))
print data.mean(axis=1)
return data.mean(axis=1)
答案 1 :(得分:1)
这就是你需要的......
def yearlymean_gm(gm_data):
data= np.load(gm_data)
average = np.zeroes(20)
for i in range (0,20):
average[i]= data[i*12:i*12+12].sum()/12
print average
return average #don't return until the loop has completed