import numpy as np pi_digits = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9, 3, 2, 3, 8, 4, 6, 2, 6, 4, 3]) # a unique_digits, counts = np.unique(pi_digits, return_counts=True) digit_probs = counts / len(pi_digits) print("digit probabilities:", [(unique_digits[i], digit_probs[i]) for i in range(len(unique_digits))]) # b most_probable_digit = np.argmax(digit_probs) print("most probable digit:", most_probable_digit) median_digit = np.sort(pi_digits)[len(pi_digits) // 2] print("median digit:", median_digit) digit_average = np.sum(pi_digits) / len(pi_digits) print("digit average:", digit_average) # c expect_j_sqrd = np.sum(pi_digits ** 2) / len(pi_digits) expect_j = np.sum(pi_digits) / len(pi_digits) std = np.sqrt(expect_j_sqrd - expect_j ** 2) print("std:", std)