# Program 2: Calculate mean, median and mode using NumPy
# Marks scored by 15 students in an AI unit test (out of 20).

import numpy as np

marks = np.array([12, 15, 18, 15, 9, 20, 15, 11, 18, 14, 16, 15, 7, 18, 13])
print("Marks :", marks)
print("Number of students :", len(marks))
print()

mean = np.mean(marks)
median = np.median(marks)

# NumPy has no mode() function. np.unique() lists each different value
# once, and return_counts=True says how many times each one occurs.
values, counts = np.unique(marks, return_counts=True)
mode = values[np.argmax(counts)]

print("Mean   :", round(mean, 2))
print("Median :", median)
print("Mode   :", mode)
print()
print("How often each mark occurs:")
for i in range(len(values)):
    print("  ", values[i], ":", counts[i], "time(s)")
