1

サイズ 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個の固有値をすべて出力できる方法を教えてください。事前にご返信いただきありがとうございます

4

2 に答える 2

2

タプルの解凍を使用するだけです:

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

次に、 を含む 1 次元配列eigenvaluesが得られlen(eigenvalues) == 2200ます。必要に応じて、通常どおり繰り返して印刷できます。

for eigenvalue in eigenvalues:
  print eigenvalue
于 2013-03-07T05:19:45.813 に答える
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 の代わりにファイル ハンドラー (またはファイル名) を使用できることです。

于 2013-03-07T08:26:37.660 に答える