Revert "Switch to statistics.stdev
"
This reverts commit 76df1dc56d
.
Fix major performance regression
This commit is contained in:
parent
76df1dc56d
commit
c2cd6f62fb
|
@ -2,10 +2,45 @@
|
||||||
|
|
||||||
import math
|
import math
|
||||||
from typing import Sequence, Union, Tuple, List
|
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]:
|
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]
|
weighted_numbers = [i * weight for i in numbers]
|
||||||
return weighted_numbers
|
return weighted_numbers
|
||||||
|
|
Loading…
Reference in New Issue
Block a user