I prefer to allocate memory to a zero matrix, say `Z=np.zeros(X.shape)`, and then fill Z as `Z[:, :n_eig] = U[:, :n_eig]`, no need to keep track of the dimensionality of the dimension of the null space.