如何使用np.linalg.eigh(A)打印所有特征值?

时间:2013-03-07 05:15:49

标签: python numpy

我有2200 * 2200的对称矩阵。 我在numpy中使用以下命令来对角化:

np.linalg.eigh(A)

它输出如下:

(array([ -1.93221186e-14,  -1.53743240e-14,  -3.58303176e-15, ...,
     4.95098104e+01,   5.06117042e+01,   5.07858517e+01]).

请建议我一种方法,以便它可以打印所有2200个特征值。 感谢您的回复

2 个答案:

答案 0 :(得分:2)

只需使用元组解包:

eigenvalues, eigenvectors = np.linalg.eigh(A)

然后你会得到一个带有eigenvalues的一维数组len(eigenvalues) == 2200。如果您愿意,可以像往常一样迭代和打印。

for eigenvalue in eigenvalues:
  print eigenvalue

答案 1 :(得分:0)

如前所述,您可以使用元组解包将特征值存储在单独的数组中。然后你可以使用np.savetxt例程写出你的数组:

import sys
import numpy as np

eigvals, eigvecs = np.linalg.eigh(A)
np.savetxt(sys.stdout, eigvals, delimiter=" ", fmt="%15.8E")

这里的好处是,如果您决定将数组写入文件而不是屏幕,则可以使用文件处理程序(甚至是文件名)而不是sys.stdout。