From 9446fcf8b7ed1c3ddfa5c142004aea27bacdbaee Mon Sep 17 00:00:00 2001 From: Lukasdotcom Date: Wed, 26 Jan 2022 19:11:30 -0500 Subject: [PATCH 1/4] Added average absolute deviation --- DIRECTORY.md | 1 + maths/average_absolute_deviation.py | 36 +++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 maths/average_absolute_deviation.py diff --git a/DIRECTORY.md b/DIRECTORY.md index 550920c0fc39..6f85ccab857d 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -454,6 +454,7 @@ * [Area](https://github.com/TheAlgorithms/Python/blob/master/maths/area.py) * [Area Under Curve](https://github.com/TheAlgorithms/Python/blob/master/maths/area_under_curve.py) * [Armstrong Numbers](https://github.com/TheAlgorithms/Python/blob/master/maths/armstrong_numbers.py) + * [Average Absolute Deviation](https://github.com/TheAlgorithms/Python/blob/master/maths/average_absolute_deviation.py) * [Average Mean](https://github.com/TheAlgorithms/Python/blob/master/maths/average_mean.py) * [Average Median](https://github.com/TheAlgorithms/Python/blob/master/maths/average_median.py) * [Average Mode](https://github.com/TheAlgorithms/Python/blob/master/maths/average_mode.py) diff --git a/maths/average_absolute_deviation.py b/maths/average_absolute_deviation.py new file mode 100644 index 000000000000..bc88af760f22 --- /dev/null +++ b/maths/average_absolute_deviation.py @@ -0,0 +1,36 @@ +def average_absolute_deviation(nums: list) -> float: + """ + Find AAD of a list of numbers. + Wiki: https://en.wikipedia.org/wiki/Average_absolute_deviation + + >>> average_absolute_deviation([0]) + 0.0 + >>> average_absolute_deviation([4, 1, 3, 2]) + 1.0 + >>> average_absolute_deviation([2, 70, 6, 50, 20, 8, 4, 0]) + 20.0 + >>> average_absolute_deviation([-20, 0, 30, 15]) + 16.25 + >>> average_absolute_deviation([]) + Traceback (most recent call last): + ... + ValueError: List is empty + + Args: + nums: List of nums + + Returns: + AAD. + """ + if not nums: # Makes sure that the list is not empty + raise ValueError("List is empty") + + average = sum(nums)/len(nums) # Calculates the average + return sum([abs(x - average) for x in nums])/len(nums) # Calculates the AAD + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + From 4d12cfa71a01bce68a2db0fd89794d247a152f10 Mon Sep 17 00:00:00 2001 From: Lukasdotcom Date: Thu, 27 Jan 2022 22:23:08 -0500 Subject: [PATCH 2/4] Formats program with black --- maths/average_absolute_deviation.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/maths/average_absolute_deviation.py b/maths/average_absolute_deviation.py index bc88af760f22..7b93f18fda8e 100644 --- a/maths/average_absolute_deviation.py +++ b/maths/average_absolute_deviation.py @@ -22,15 +22,14 @@ def average_absolute_deviation(nums: list) -> float: Returns: AAD. """ - if not nums: # Makes sure that the list is not empty + if not nums: # Makes sure that the list is not empty raise ValueError("List is empty") - - average = sum(nums)/len(nums) # Calculates the average - return sum([abs(x - average) for x in nums])/len(nums) # Calculates the AAD + + average = sum(nums) / len(nums) # Calculates the average + return sum([abs(x - average) for x in nums]) / len(nums) # Calculates the AAD if __name__ == "__main__": import doctest doctest.testmod() - From 60450db17f3fe9ba0619929900f85a96151e802e Mon Sep 17 00:00:00 2001 From: Lukasdotcom Date: Sun, 30 Jan 2022 17:12:57 -0500 Subject: [PATCH 3/4] reruns updated pre commit --- maths/average_absolute_deviation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maths/average_absolute_deviation.py b/maths/average_absolute_deviation.py index 7b93f18fda8e..1956d1416ace 100644 --- a/maths/average_absolute_deviation.py +++ b/maths/average_absolute_deviation.py @@ -26,7 +26,7 @@ def average_absolute_deviation(nums: list) -> float: raise ValueError("List is empty") average = sum(nums) / len(nums) # Calculates the average - return sum([abs(x - average) for x in nums]) / len(nums) # Calculates the AAD + return sum(abs(x - average) for x in nums) / len(nums) # Calculates the AAD if __name__ == "__main__": From 1c19f8dd0a11b8441633858719d92b5e89f9e04b Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Sun, 13 Feb 2022 18:16:52 +0100 Subject: [PATCH 4/4] Update average_absolute_deviation.py --- maths/average_absolute_deviation.py | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/maths/average_absolute_deviation.py b/maths/average_absolute_deviation.py index 1956d1416ace..193d94a2f265 100644 --- a/maths/average_absolute_deviation.py +++ b/maths/average_absolute_deviation.py @@ -1,6 +1,6 @@ -def average_absolute_deviation(nums: list) -> float: +def average_absolute_deviation(nums: list[int]) -> float: """ - Find AAD of a list of numbers. + Return the average absolute deviation of a list of numbers. Wiki: https://en.wikipedia.org/wiki/Average_absolute_deviation >>> average_absolute_deviation([0]) @@ -15,18 +15,12 @@ def average_absolute_deviation(nums: list) -> float: Traceback (most recent call last): ... ValueError: List is empty - - Args: - nums: List of nums - - Returns: - AAD. """ if not nums: # Makes sure that the list is not empty raise ValueError("List is empty") - average = sum(nums) / len(nums) # Calculates the average - return sum(abs(x - average) for x in nums) / len(nums) # Calculates the AAD + average = sum(nums) / len(nums) # Calculate the average + return sum(abs(x - average) for x in nums) / len(nums) if __name__ == "__main__":