From d52fc2f200df8a7ad01245c0fcaaa1939003c71e Mon Sep 17 00:00:00 2001 From: Hykilpikonna Date: Thu, 25 Nov 2021 18:17:43 -0500 Subject: [PATCH] [+] Division ignoring zeros --- src/utils.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/utils.py b/src/utils.py index 0372f29..371277e 100644 --- a/src/utils.py +++ b/src/utils.py @@ -246,6 +246,28 @@ def parse_date(iso: str) -> datetime: int(iso[11:13]), int(iso[14:16]), int(iso[17:19])) +def divide_zeros(numerator: list[float], denominator: list[float]) -> list[float]: + """ + Divide two lists of floats, ignoring zeros (anything dividing by zero will produce zero) + + Preconditions: + - len(numerator) == len(denominator) + + :param numerator: Numerator + :param denominator: Denominator + :return: A list where list[i] = numerator[i] / denominator[i] + """ + output = np.zeros(len(numerator), float) + for i in range(len(numerator)): + if denominator[i] == 0: + output[i] = 0 + else: + output[i] = numerator[i] / denominator[i] + # This marks it as incorrect type but it's actually not incorrect type, just because numpy + # doesn't specify its return types + return output.tolist() + + class EnhancedJSONEncoder(json.JSONEncoder): def default(self, o):