Revert "Switch to statistics.stdev"

This reverts commit 76df1dc56d.

Fix major performance regression
This commit is contained in:
Samuel Sloniker 2022-07-22 14:45:43 -07:00
parent 76df1dc56d
commit c2cd6f62fb

View File

@ -2,10 +2,45 @@
import math
from typing import Sequence, Union, Tuple, List
import statistics
def _mean(numbers: Sequence[float]) -> float:
"""Calculate the mean of a group of numbers
Parameters
----------
numbers : list of int or float
The numbers to calculate the mean of
Returns
-------
float
The mean of the numbers
"""
return sum(numbers) / len(numbers)
def _standard_deviation(numbers: Sequence[float]) -> float:
"""Calculate the standard deviation of a group of numbers
Parameters
----------
numbers : list of int or float
The numbers to calculate the mean of
Returns
-------
float
The standard deviation of the numbers
"""
mean = _mean(numbers)
squared_deviations = [(mean - i) ** 2 for i in numbers]
return math.sqrt(_mean(squared_deviations))
def weight(numbers: Sequence[float]) -> List[float]:
weight = statistics.stdev(numbers) * 2
standard_deviation = _standard_deviation(numbers)
weight = standard_deviation * 2
weighted_numbers = [i * weight for i in numbers]
return weighted_numbers