# NumPy mean() vs. average(): What’s the Difference?

You can use the np.mean() or np.average() functions to calculate the average value of an array in Python.

Here is the subtle difference between the two functions:

• np.mean always calculates the arithmetic mean.
• np.average has an optional weights parameter that can be used to calculate a weighted average.

The following examples show how to use each function in practice.

### Example 1: Use np.mean() and np.average() without Weights

Suppose we have the following array in Python that contains seven values:

```#create array of values
data = [1, 4, 5, 7, 8, 8, 10]
```

We can use np.mean() and np.average() to calculate the average value of this array:

```import numpy as np

#calculate average value of array
np.mean(data)

6.142857142857143

#calcualte average value of array
np.average(data)

6.142857142857143
```

Both functions return the exact same value.

Both functions used the following formula to calculate the average:

Average = (1 + 4 + 5 + 7 + 8 + 8 + 10) / 7 = 6.142857

### Example 2: Use np.average() with Weights

Once again suppose we have the following array in Python that contains seven values:

```#create array of values
data = [1, 4, 5, 7, 8, 8, 10]
```

We can use np.average() to calculate a weighted average for this array by supplying a list of values to the weights parameters:

```import numpy as np

#calculate weighted average of array
np.average(data, weights=(.1, .2, .4, .05, .05, .1, .1))

5.45
```

The weighted average turns  out to be 5.45.

Here is the formula that np.average() used to calculate this value:

Weighted Average = 1*.1 + 4*.2 + 5*.4 + 7*.05 + 8*.05 + 8*.1 + 10*.1 = 5.45.

Note that we could not use np.mean() to perform this calculation since that function doesn’t have a weights parameter.

Refer to the NumPy documentation for a complete explanation of the np.mean() and np.average() functions.