Solución:
Podrías usar numpy.average
para calcular el promedio ponderado.
In [13]: import numpy as np
In [14]: rate = [14.424, 14.421, 14.417, 14.413, 14.41]
In [15]: amount = [3058.0, 8826.0, 56705.0, 30657.0, 12984.0]
In [17]: weighted_avg = np.average(rate, weights=amount)
In [19]: weighted_avg
Out[19]: 14.415602815646439
for g in range(len(rate)):
rate[g] = rate[g] * amount[g] / sum(amount)
rate = sum(rate)
es lo mismo que:
sum(rate[g] * amount[g] / sum(amount) for g in range(len(rate)))
que es lo mismo que:
sum(rate[g] * amount[g] for g in range(len(rate))) / sum(amount)
que es lo mismo que:
suma (x * y para x, y en zip (tasa, monto)) / suma (monto)
Resultado:
14.415602815646439
Esto parece un promedio ponderado.
values = [1, 2, 3, 4, 5]
weights = [2, 8, 50, 30, 10]
s = 0
for x, y in zip(values, weights):
s += x * y
average = s / sum(weights)
print(average) # 3.38
Esto salidas 3.38
, que de hecho tiende más hacia los valores con los pesos más altos.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)