【发布时间】:2016-08-17 17:08:21
【问题描述】:
我有一个数据集,其中包含 20 年的月平均值,该数据集包含在一个尺寸为 (1x240) 的 numpy 数组中。我正在尝试编写一个函数来吐出年度平均值。我已经设法做到了(我相信),使用 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
但这给了我一个很长很古怪的清单。这方面的帮助也很酷。谢谢!
【问题讨论】:
-
我确定这是重复的,但我找不到。您的
for循环体内有您的return,因此它只完成一次迭代。然后函数结束,所以你的循环的其余部分是 kaput。 -
示例中的缩进有些问题。此外,第二个代码块包含
return,但它不在函数中。 -
@Two-BitAlchemist 我敢肯定有很多,但他们从来没有一个可以轻松追踪的标题:) 缩进是无效的,所以我不确定我们能否确认这是原因。
-
通过 pandas 的聚合数据集可能会为您提供您正在寻找的结果(并且不需要迭代逻辑)。如果您愿意,我可以提供更多详细信息 - 请告诉我。
-
@Sevyns 对于他想要计算的内容,他正走在正确的轨道上......他只需要取消他的退货声明
标签: python arrays numpy for-loop