def average_and_std_type(all_results, index):
    avg = EmptyObject()

    for n, run in enumerate(all_results):
        if n == 0:
            avg.a_o_e = np.array(run[index].a_o_e)
            avg.a_o_t = np.array(run[index].a_o_t)
            avg.policy_diff1 = run[index].policy_diff1
            avg.policy_diff2 = run[index].policy_diff2
            avg.e_on_e = [run[index].e_on_e]
            avg.e_o_t = [run[index].e_o_t]
        else:
            avg.a_o_e = np.vstack((avg.a_o_e, np.array(run[index].a_o_e)))
            avg.a_o_t = np.vstack((avg.a_o_t, np.array(run[index].a_o_t)))
            avg.policy_diff1 = np.vstack(
                (avg.policy_diff1, np.array(run[index].policy_diff1)))
            avg.policy_diff2 = np.vstack(
                (avg.policy_diff2, np.array(run[index].policy_diff2)))
            avg.e_on_e.append(run[index].e_on_e)
            avg.e_o_t.append(run[index].e_o_t)
    avg.mean_a_o_e = np.mean(avg.a_o_e, axis=0)
    avg.std_a_o_e = np.std(avg.a_o_e, axis=0)
    avg.mean_a_o_t = np.mean(avg.a_o_t, axis=0)
    avg.std_a_o_t = np.std(avg.a_o_t, axis=0)
    avg.mean_policy_diff1 = np.mean(avg.policy_diff1, axis=0)
    avg.std_policy_diff1 = np.std(avg.policy_diff1, axis=0)
    avg.mean_policy_diff2 = np.mean(avg.policy_diff2, axis=0)
    avg.std_policy_diff2 = np.std(avg.policy_diff2, axis=0)
    avg.e_on_e = np.mean(avg.e_on_e)
    avg.e_o_t = np.mean(avg.e_o_t)
    return avg
def average_and_std_type(all_results,index):
	avg = EmptyObject()

	for n,run in enumerate(all_results):
		if n ==0:
			avg.a_o_e = np.array(run[index].a_o_e); avg.a_o_t = np.array(run[index].a_o_t)
			avg.policy_diff1 = run[index].policy_diff1; avg.policy_diff2 = run[index].policy_diff2
			avg.e_on_e = [run[index].e_on_e]; avg.e_o_t = [run[index].e_o_t]
		else:
			avg.a_o_e = np.vstack((avg.a_o_e,np.array(run[index].a_o_e))); avg.a_o_t =np.vstack((avg.a_o_t, np.array(run[index].a_o_t)))
			avg.policy_diff1 =np.vstack((avg.policy_diff1, np.array(run[index].policy_diff1))); avg.policy_diff2 =np.vstack((avg.policy_diff2,np.array(run[index].policy_diff2)))
			avg.e_on_e.append(run[index].e_on_e); avg.e_o_t.append(run[index].e_o_t)
	avg.mean_a_o_e  = np.mean(avg.a_o_e,axis = 0); avg.std_a_o_e = np.std(avg.a_o_e,axis = 0)
	avg.mean_a_o_t  = np.mean(avg.a_o_t,axis = 0); avg.std_a_o_t = np.std(avg.a_o_t,axis = 0)
	avg.mean_policy_diff1 = np.mean(avg.policy_diff1,axis=0); avg.std_policy_diff1  = np.std(avg.policy_diff1,axis = 0)
	avg.mean_policy_diff2 = np.mean(avg.policy_diff2,axis=0); avg.std_policy_diff2  = np.std(avg.policy_diff2,axis = 0)
	avg.e_on_e = np.mean(avg.e_on_e); avg.e_o_t = np.mean(avg.e_o_t)
	return avg