In [1]:
import numpy as np

In [ ]:
# Order is Siess, Pisa, Dartmouth, Baraffe

In [3]:
ages = np.array([19., 18., 17., 19.])
age_err = np.array([3, 2, 2., 2])

In [12]:
masses = np.array([2.7, 2.71, 2.60, 2.68])
mass_err = np.array([0.06, 0.07, 0.07, 0.05])

In [10]:
masses = np.array([2.74, 2.72, 2.66, 2.70])
mass_err = np.array([0.07, 0.07, 0.07, 0.06])

In [14]:
def weighted_average(x, err):
    invar = 1/err**2
    
    denom = np.sum(invar)
    
    mean = np.sum(x * invar)/denom
    std = np.sqrt(1/denom)
    return (mean, std)

In [15]:
print(weighted_average(masses, mass_err))


(2.6757193568594695, 0.030345680168111514)

In [16]:
print(weighted_average(ages, age_err))


(18.129032258064516, 1.0776318121606494)

In [ ]: