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

2 投票
2 回答
746 浏览
提问于 2025-04-17 18:13

我有一个对称矩阵,大小是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

之前提到过,你可以使用元组解包的方法,把你的特征值存储到一个单独的数组里。然后你可以用 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。

3

只需使用元组解包:

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

这样你就会得到一个一维数组 eigenvalues,它的长度是 len(eigenvalues) == 2200。如果你想的话,可以像往常一样遍历并打印出来。

for eigenvalue in eigenvalues:
    print(eigenvalue)

撰写回答