使用python for循环平均数据

使用python for循环平均数据,python,arrays,numpy,for-loop,Python,Arrays,Numpy,For Loop,我有一个数据集,它包含20年的月平均值,以一个整数数组表示,每个维度(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

我有一个数据集,它包含20年的月平均值,以一个整数数组表示,每个维度(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= 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

但这给了我一个长长的、古怪的清单。这方面的帮助也很酷。谢谢

这是你需要的

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

这是你需要的

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
为什么不完全避免“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)
为什么不完全避免“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)

我肯定这是一个复制品,但我找不到。在
for
循环体中有
return
,因此它只完成一次迭代。然后函数结束了,剩下的循环就完蛋了。示例中的缩进有问题。另外,第二个代码块包含一个
返回值,但它不在函数中。@Two Bitalchest我肯定有很多,但它们从来没有一个易于跟踪的标题:)尽管缩进无效,因此,我不确定我们是否能确认这是原因。通过pandas的聚合数据集可能会提供您想要的结果(并且不需要迭代逻辑)。如果你愿意的话,我可以提供更多的细节——让我知道。@Sevyns他在正确的轨道上,他想要计算的东西。。。他只需要取消他的退货声明。我肯定这是一份副本,但我找不到。在
for
循环体中有
return
,因此它只完成一次迭代。然后函数结束了,剩下的循环就完蛋了。示例中的缩进有问题。另外,第二个代码块包含一个
返回值,但它不在函数中。@Two Bitalchest我肯定有很多,但它们从来没有一个易于跟踪的标题:)尽管缩进无效,因此,我不确定我们是否能确认这是原因。通过pandas的聚合数据集可能会提供您想要的结果(并且不需要迭代逻辑)。如果你愿意的话,我可以提供更多的细节——让我知道。@Sevyns他在正确的轨道上,他想要计算的东西。。。他只需要取消回复声明