https://sajalsharma.com/posts/coding-kmeans-clustering-python-numpy/