1

我的 python 程序需要一些帮助。我已经导入了一个 .txt 文件,并在一个 numpy 数组中创建了一个字典。文本文件是一张二氧化碳测量表,每年每月一次。我需要在一个公式(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):

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

4

1 回答 1

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)
于 2013-04-02T14:48:31.430 回答