 <p>Standard method would be to use <a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.eig.html" rel="nofollow">numpy.linalg.eig</a>.</p> <pre><code>from numpy import linalg as LA w, v = LA.eig(np.diag((1, 2, 3))) # w: # array([ 1., 2., 3.]) # v: # array([[ 1., 0., 0.], # [ 0., 1., 0.], # [ 0., 0., 1.]]) </code></pre> <p>Obviously, if your matrix is very specific (let's say very large and sparse), usually you want to use iterative approach (e.g. <em>Krylov subspace method</em>) to find most dominant eigenvalues. See <a href="http://docs.scipy.org/doc/scipy/reference/tutorial/arpack.html" rel="nofollow">discussion</a> for more details.</p>