w3resource

NumPy: Compute the weighted of a given array


Write a NumPy program to compute the weighted of a given array.

Sample Solution:

Python Code:

# Importing the NumPy library
import numpy as np

# Creating an array 'x' using arange with 5 elements
x = np.arange(5)

# Displaying the original array 'x'
print("\nOriginal array:")
print(x)

# Creating weights from 1 to 5 using arange
weights = np.arange(1, 6)

# Calculating the weighted average of the array 'x' using np.average() and 'weights'
r1 = np.average(x, weights=weights)

# Calculating the weighted average manually
r2 = (x * (weights / weights.sum())).sum()

# Asserting if the results from np.average() and manual calculation are close
assert np.allclose(r1, r2)

# Displaying the calculated weighted average of the array 'x'
print("\nWeighted average of the said array:")
print(r1) 

Sample Output:

Original array:
[0 1 2 3 4]

Weighted average of the said array:
2.6666666666666665

Explanation:

In the above code –

x = np.arange(5): An array x is created using the numpy.arange function to generate the values [0, 1, 2, 3, 4].

weights = np.arange(1, 6): Here numpy.arange generates the values [1, 2, 3, 4, 5], which will be used as the weights for the weighted average calculation.

r1 = np.average(x, weights=weights): The numpy.average function is then used to calculate the weighted average of x using the weights array. The resulting value is assigned to r1.

r2 = (x*(weights/weights.sum())).sum(): This code calculates the weighted average manually using the formula r2 = (x*(weights/weights.sum())).sum().

assert np.allclose(r1, r2): Finally, the code uses the numpy.allclose function to assert that r1 and r2 are equal within a tolerance. It returns true as r1 and r2 are equal.

Python-Numpy Code Editor: