私は、2つの整数パラメータに応じていくつかの行列を作成するのに問題があります。 p1、p2が0から5までの値を取るp1、p2に依存するそれらをAと呼ぶことにしよう。Pythonのデータ構造:パラメータに依存する配列
Aの固有値と固有ベクトルをBという名前の "オブジェクト"に格納する方法はありますか? B(1,2)[i](またはB [1,2、i])のようなものは、行列Aの固有値(i = 0の場合)または固有ベクトル(i = 1の場合)を結果として与えるp1 = 1、p2 = 2?
現在、以下の簡単な例のように、固有ベクトルを辞書に格納していますが、それは汚いハックだと思います。
import numpy as np
# Build A matrices
def Amatrix(p1,p2):
import numpy as np
return np.array([[p1,p2/10],[p2/10,-p1]])
# Empty dict
eigvec_dict = {}
for p1 in range(3):
for p2 in range(2):
label = str(p1)+str(p2)
eigenvec_dict[label] = np.linalg.eigh(Amatrix(p1,p2))
eigenvec_dict.keys()
Out[9]: ['11', '10', '00', '01', '20', '21']
eigenvec_dict["01"][0]
Out[10]: array([-1., 1.])
eigenvec_dict["01"][1]
Out[11]:
array([[-0.70710678, 0.70710678],
[ 0.70710678, 0.70710678]])
私はパラメータの配列も使用します。 Evalsの場合は3d配列、Evecsの場合は4d、またはdtype = object'の2次元配列を作成し、各セルにEvalsとEvecsを含む 'namedtuple'を格納する必要があるかどうかです。 –
こんにちは、Currixとサイトにようこそ。私たちは一般的に質問をナットとボルトの詳細にとどめようとしていますので、私はあなたのことをちょっとはずしました。 – MackM
あなたの助けとトリミングのおかげでありがとう。 – Currix