行列形式を使って式内のループをfor
に変換する必要があります。'for'ループを行列式に変換しますか?
マトリックスC
:
array([[0, 1, 1],
[1, 0, 0],
[1, 0, 0]])
ベクターdelta_E
:
array([ 4., 2., 4., 1.])
A
はC
の寸法がゼロの行列であり、長さ3のベクトルE
Iは行列C
を有します、およびindices
のリスト:
indices = [1, 1, 0, 1]
私はのためのC
の列インデックスが見つかりました:
i0, i1 = np.where(C[indices] == 1)
は、彼らは以下のとおりです。
i0 = [0, 1, 2, 3]
i1 = [0, 0, 1, 0]
私は1つでi0
とi1
に含まれるA
インデックスをインクリメントし、E
インデックスをインクリメントしたいですi1
に含まれるものdelta_E
:
for k, i, j in enumerate(indices[i0], i1):
A[i,j] += 1
A[j,i] += 1
E[i] += delta_E[k]
結果は:
マトリックスA
:
array([[0, 4, 1],
[4, 0, 0],
[1, 0, 0]])
マトリックスE
:
array([4, 7, 0])
上記のfor
ループを行列式に変換できますか?
あなたがnumpyのを見たことがありますか? – sobek
はい、sobek、私は試してみました...しかしあなたが知っている、numpyは非常に多くのメソッドを持っています。 –
私はあなたの計算を再現しようとしています、そして反復のいくつかのバグを打っています。 enumerateにはzipが必要です。delta_E [4]は範囲外です。 – hpaulj