import random import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import math import numpy as np fig = plt.figure() ax = fig.gca(projection='3d') x1 = np.array([random.gauss(0,1) for i in xrange(1000)]) x2 = np.array([random.gauss(0,1) for i in xrange(1000)]) x3 = np.array([i+e for i,e in zip(x1,x2)]) vec = np.hstack((x1[:,np.newaxis],x2[:,np.newaxis],x3[:,np.newaxis])) covariance = np.cov(vec.transpose()) print covariance eingval, eigenvect = np.linalg.eig(covariance) y = np.linalg.inv(eigenvect)*np.matrix(vec).transpose() print np.linalg.eig(np.cov(y))[0] y = np.array(y.transpose(),dtype=np.float32) ax.scatter(vec[:,0],vec[:,1],vec[:,2], c="r") ax.scatter(y[:,0],y[:,1],y[:,2], c="b") plt.axis([-4,4, -4,4]) plt.show()