docs: def orthogonal_initialization(X,K):
      """
      Initialize the centrodis by orthogonal_initialization.
      Parameters    
      --------------------
      X(data): array-like, shape= (m_samples,n_samples)
      K: integer
          number of K clusters   
      Returns
      -------
      centroids: array-like, shape (K,n_samples)  
      data_norms: array-like, shape=(1,n_samples)     
      """
      N,M = X.shape
      centroids= X[np.random.randint(0, N-1,1),:] 
      data_norms = np.linalg.norm(X, axis = 1)# contains the norm of each data point, only do this once
           
      center_norms = np.linalg.norm(centroids, axis=1) # contains the norms of the centers, will need to be updated when new center added
          
      for k in range(1,K):    
          ## Here's where we compute the cosine of the angle between them:
          # Compute the dot (inner) product between each data point and each center
          new_center_index,new_center = new_orthogonal_center(X,data_norms,centroids,center_norms =center_norms)
          centroids = np.vstack((centroids,new_center))          
          center_norms = np.hstack((center_norms,data_norms[new_center_index]))   
      return centroids,data_norms