code: def project(self, X, Q=None):
          
          if Q is None:
              Q = self.Q
          if Q > X.shape[1]:
              raise IndexError("requested dimension larger then input dimension")
          X = self.center(X)
          return X.dot(self.eigvectors[:, :Q])
docs: Project X into PCA space, defined by the Q highest eigenvalues.
          Y = X dot V