计算给定 NumPy 数组的加权平均值
加权平均是一种平均数类型,其中每个数组元素在计算数据元素的平均值之前将乘以一个权重因子。每个数据点的权重决定了它对所有整体平均值的贡献。
计算加权平均值
这用于计算投资组合价值中股票的平均价格。加权平均值的数学公式如下所示。
weighted_average = (w1 * x1 + w2 * x2 + ... + wn * xn) / (w1 + w2 + ... + wn)
其中:
x1, x2, …..,xn 是给定的数据点
w1, w2, ……, wn 分别是乘以每个数据点的加权平均值
n 是元素的总数
NumPy 数组的加权平均值
在 Python 中,NumPy 库提供 average() 函数来计算给定数组元素的加权平均值。
语法
以下是查找给定数组元素的加权平均值的语法:
numpy.average(array, weights = weights)
其中:
Array 是输入数组
weights 是在计算平均值之前要乘以数组元素的权重值。
示例
为了找到给定数组的加权平均值,我们必须将数组和权重作为输入参数传递。在这里,我们传递的是二维数组的元素和权重:
import numpy as np a = np.array([[34,23],[90,34]]) weights = np.array([[2,3],[5,7]]) print("The input array:",a) print("The dimension of the array:",np.ndim(a)) avg = np.average(a) print("The average of the given 2-d array:",avg) weg = np.average(a,weights = weights) print("weighted average of the array:",weg)
输出
The input array: [[34 23] [90 34]] The dimension of the array: 2 The average of the given 2-d array: 45.25 weighted average of the array: 48.529411764705884
示例
在下面的示例中,我们尝试计算一维数组的加权平均值:
import numpy as np a = np.array([3,4,2,3,90,34]) weights = np.array([2,3,1,5,7,6]) print("The input array:",a) print("The dimension of the array:",np.ndim(a)) avg = np.average(a) print("The average of the given 1-d array:",avg) weg = np.average(a,weights = weights) print("weighted average of the array:",weg)
输出
The input array: [ 3 4 2 3 90 34] The dimension of the array: 1 The average of the given 1-d array: 22.666666666666668 weighted average of the array: 36.208333333333336
示例
在这个例子中,我们使用 average() 函数计算三维数组的加权平均值:
import numpy as np a = np.array([[[3,4],[2,3]],[[90,34],[78,23]]]) weights = np.array([[[3,4],[2,3]],[[90,34],[78,23]]]) print("The input array:",a) print("The dimension of the array:",np.ndim(a)) avg = np.average(a) print("The average of the given 3-d array:",avg) weg = np.average(a,weights = weights) print("weighted average of the array:",weg)
输出
The input array: [[[ 3 4] [ 2 3]] [[90 34] [78 23]]] The dimension of the array: 3 The average of the given 3-d array: 29.625 weighted average of the array: 67.11814345991561
广告