import numpy as np import matplotlib.pyplot as plt data = np.array([[2.5,2.4],[0.5,0.7],[2.2,2.9],[1.9,2.2],[3.1,3.0],[2.3,2.7],[2,1.6],[1,1.1],[1.5,1.6],[1.1,0.9]]) e1 = np.mean(data[:,0]) e2 = np.mean(data[:,1]) x = data[:,0] y = data[:,1] data1=np.array([[2.5,2.4],[0.5,0.7],[2.2,2.9],[1.9,2.2],[3.1,3.0],[2.3,2.7],[2,1.6],[1,1.1],[1.5,1.6],[1.1,0.9]]) data1[:,0]=x-e1 data1[:,1]=y-e2 DataAdjust=data1 c= np.array([[(1 / (len(x) - 1)) * np.dot((x - e1), (x - e1)),(1 / (len(x) - 1)) * np.dot((x - e1), (y - e2))],[(1 / (len(y) - 1)) * np.dot((y - e2), (x - e1)),(1 / (len(y) - 1)) * np.dot((y - e2), (y - e2))]]) a,b = np.linalg.eig(c) if a[0] > a[1]: b00=b[0,0] b01=b[1,0] EigenVectors = np.array([[b00],[b01]]) else: m=a[1] b10=b[0,1] b11=b[1,1] EigenVectors = np.array([b10,b11]) EigenVectors=EigenVectors.reshape(2,1) FinalData=np.dot(DataAdjust,EigenVectors) FinalData=sorted(FinalData) print(FinalData) plt.plot(FinalData,'g-s') plt.show()