我的python程序需要一些帮助。我导入了一个.txt文件,并在一个numpy数组中创建了它的字典。该文本文件是co2 meassures的表格,每年每月一个。我需要计算公式中每年的平均二氧化碳值(def annual_mean_co2)。 “extract_complete_years”是一个公式,它排除了不完整的测量年份。
到目前为止,这是我的计划:
data = np.loadtxt('MaunaLoa_CO2.txt', comments = '#')
def extract_complete_years(r):
whole_year = data[10:-2, r]
return whole_year
def read_MLdata(dittfilnavn):
dictionary = {'years': extract_complete_years(0),\
'months': extract_complete_years(1),\
'decyears': extract_complete_years(2),\
'co2': extract_complete_years(3),\
'co2_interp': extract_complete_years(4),\
'co2_trend': extract_complete_years(5),\
'num_no_data': extract_complete_years(6)}
return dictionary
def annual_mean_co2(MLdata):
我真的希望有人可以提供帮助: - )
答案 0 :(得分:0)
最简单的方法是做一些事情:
def annual_mean_co2(MLdata):
years = MLdata['years']
co2 = MLdata['co2']
y, _ = np.unique(years, return_inverse=True)
co2_mean = np.empty(y.shape)
for j in xrange(len(y)):
co2_mean[j] = np.mean(co2[_ == j])
return y, c02_mean
如果,因为您只有完整的年份,您确定每年都会有完全相同的条目数,您可以将for循环向量化为:
def annual_mean_co2(MLdata):
years = MLdata['years']
co2 = MLdata['co2']
y, _ = np.unique(years, return_inverse=True)
idx = np.argsort(_)
co2_mean = co2[idx].reshape(len(y), -1)
return y, np.mean(co2_mean, axis=1)