import numpy as np
# 10 samples, 15 features
batch = 20
data = np.random.rand(batch, 15)
mean = data.mean(axis=0)
data -= mean
cov = np.cov(data.T)
eigen_value, feature_vector = np.linalg.eig(cov)
eigen_value_part = eigen_value[:5]
feature_vector_part = feature_vector[:5] # 5 15
# data 20 15
new_data = data @ feature_vector_part.T
print(new_data)
print(new_data.shape)