Python字典ManuaLoa CO2

时间:2013-04-02 07:31:03

标签: python dictionary numpy formula mean

我的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):

我真的希望有人可以提供帮助: - )

1 个答案:

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