使用python for循环来平均数据

时间:2016-08-17 17:08:22

标签: python arrays numpy for-loop

我有一个数据集,其中包含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

但这给了我一个漫长而古怪的清单。对此的帮助也很酷。谢谢!

2 个答案:

答案 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