diff --git a/numpy_questions.py b/numpy_questions.py index 07a10c1..c22ff14 100644 --- a/numpy_questions.py +++ b/numpy_questions.py @@ -15,6 +15,7 @@ This will be enforced with `flake8`. You can check that there is no flake8 errors by calling `flake8` at the root of the repo. """ + import numpy as np @@ -29,7 +30,7 @@ def max_index(X): Returns ------- (i, j) : tuple(int) - The row and columnd index of the maximum. + The row and column index of the maximum. Raises ------ @@ -37,10 +38,17 @@ def max_index(X): If the input is not a numpy array or if the shape is not 2D. """ - i = 0 - j = 0 + # Check if X is a numpy array + if not isinstance(X, np.ndarray): + raise ValueError("Input must be a numpy array.") + + # Check if X is 2D + if X.ndim != 2: + raise ValueError("Input array must be 2-dimensional.") - # TODO + # Find the index of the maximum element + flat_index = np.argmax(X) # Get the flattened index of the max element + i, j = divmod(flat_index, X.shape[1]) return i, j @@ -62,6 +70,11 @@ def wallis_product(n_terms): pi : float The approximation of order `n_terms` of pi using the Wallis product. """ - # XXX : The n_terms is an int that corresponds to the number of - # terms in the product. For example 10000. - return 0. + + product = 1.0 + for i in range(1, n_terms + 1): + numerator = 4 * i**2 + denominator = (4 * i**2) - 1 + product *= numerator / denominator + + return product * 2