1つの配列のみが参照されている場合、2つの異なるnumpy配列に同じ値が割り当てられます

user157691

私は線形方程式を解くためのヤコビ法を実行するためのコードを書こうとしています(私の方法はこれを行うための最も効率的な方法ではないことを理解していますが、なぜそれが機能しないのかを理解しようとしています)。

問題をデバッグしようとしましたが、次の問題に気づきました。xnew [i]に新しい値が割り当てられる32行目の2回目の反復では、x [i]が参照されていなくても、同じ値がx [i]にも割り当てられるため、コードは2回の反復後に終了します。forループが最初に実行されたときではなく、2回目の反復でこれが発生するのはなぜですか?これを修正する方法はありますか?

前もって感謝します

import numpy as np

A = np.array(
    [[0.93, 0.24, 0],
     [0.04, 0.54, 0.26],
     [1, 1, 1]])

b = np.array([[6.0], [2.0], [10.0]])

n , m  = np.shape(A) 

x = np.zeros(shape=(n,1))

xnew = np.zeros(shape=(n,1))

iterlimit = 100 
tol = 0.0000001 


for  iteration in range(iterlimit):

    convergence = True
    for i in range(n):
        sum=0
        for j in range(n):
            if j != i:
                sum = sum + (A[i,j] * x[j])
        
        #on second iteration (iteration =1) below line begins to
        #assign x[i] the same values as it assigns xnew[i] causing the 
        #convergence check below to not run and results in a premature break
        xnew[i] = 1/A[i,i] * (b[i] - sum) 
                     
        if abs(xnew[i]-x[i]) > tol:
            convergence = False
            
    if convergence:
        break
    
    x = xnew

print("Iteration:", iteration+1)
print("Solution:")
print(np.matrix(xnew))
マイケル
x = xnew

この行はに割り当てxnewられxます。xnew内容ではなく、配列自体です。したがって、最初の反復の後、メモリ内の同じ配列xxnew参照します。

代わりに試してください x[:] = xnew[:]

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

同じ長さの2つの配列が与えられた場合、どの要素が「シフト」されているかを見つけます

分類Dev

ネストされた配列を別の配列と比較し、値が同じ場合に割り当てます

分類Dev

2つの配列オブジェクトに同じ値が含まれている場合に同じハッシュコードを生成する

分類Dev

あるコレクションから別のコレクションに1つのフィールドを参照しています。しかし、重複がある場合は常に、返される配列は異なります

分類Dev

2番目の要素が押されることになっている場合、jsonキーには配列ではなく番号が割り当てられます

分類Dev

2つの配列に同じ値が含まれているが順序が異なるかどうかを確認するphp

分類Dev

配列内の同じ色の要素を見つけ、それらが互いに隣り合っている場合は true を出力します

分類Dev

同じ結果がある場合に表示されないオブジェクトの2つの配列を比較するlodashにありますか

分類Dev

2つの値のそれぞれに配列を割り当てる(拡散する)とは異なります

分類Dev

同じ配列値を2つの異なる変数に割り当てるにはどうすればよいですか

分類Dev

異なる値を持ついくつかの同じキーを持つ以下の配列があります。PHPで同じキー値をそのキーと組み合わせるにはどうすればよいですか?私はWAMP、Codeigniterを使用しています

分類Dev

インデックスが1つだけ更新されると、Pythonのnumpyzeros配列にすべての値に1が割り当てられます

分類Dev

Python:他の2つの列の同じ行に「いいえ」の文字列が含まれている場合は、行から文字列値を削除します

分類Dev

ソートされていない2つの配列AとBが与えられた場合、配列の1つだけをソートすることにより、合計(または差)が与えられたkに等しい要素のペアを見つけます。

分類Dev

配列の値をCoreDataに保存する場合、1つの値のみが保存されます

分類Dev

値が同じ場合は、Excelの列から一度に1つの値を割り当てます

分類Dev

同じ長さのxとyの2つのNumPy配列がある場合、xがx_minとx_maxの間に収まるように、すべてのペア(x、y)を選択するにはどうすればよいですか?

分類Dev

2つのオブジェクトの配列があります。これらの配列では、IDが同じである場合、IDを一致させたいのですが、同じIDの情報を組み合わせた新しい配列が必要です

分類Dev

同じ長さの2つの配列。最初の配列値がtrueに等しい場合、2番目の配列から値を取得します

分類Dev

動的に割り当てられた配列を出力すると、最後の値のみが出力されます

分類Dev

Swift 5 [[object]]の名前に別の配列の1つ以上の値が含まれている場合

分類Dev

値が同じである場合、配列によって形成される辞書の要素を削除します

分類Dev

文の文字列を半分に分割して、それぞれが可能な限り同じ長さの2つの文字列の配列にする方法は?

分類Dev

配列内のどこかに含まれている同じ値の2つと3つの配列の比較

分類Dev

オブジェクトの2つのJavaScript配列が要素を共有している場合、1つの配列が参照されなくなったときに、すべての非共有メモリがガベージコレクションされますか?

分類Dev

2つの配列から一致する値を見つけます。1つの配列にはhtml要素が含まれています-Javascript

分類Dev

配列に1つの0の後に1つの1が順番に含まれている場合

分類Dev

デコードされた場合、2つの異なるBASE 64エンコードされた文字列が同じ文字列になりますか?

分類Dev

jQuery "extend"を使用して2つの配列を結合すると、1つの配列が返されます

Related 関連記事

  1. 1

    同じ長さの2つの配列が与えられた場合、どの要素が「シフト」されているかを見つけます

  2. 2

    ネストされた配列を別の配列と比較し、値が同じ場合に割り当てます

  3. 3

    2つの配列オブジェクトに同じ値が含まれている場合に同じハッシュコードを生成する

  4. 4

    あるコレクションから別のコレクションに1つのフィールドを参照しています。しかし、重複がある場合は常に、返される配列は異なります

  5. 5

    2番目の要素が押されることになっている場合、jsonキーには配列ではなく番号が割り当てられます

  6. 6

    2つの配列に同じ値が含まれているが順序が異なるかどうかを確認するphp

  7. 7

    配列内の同じ色の要素を見つけ、それらが互いに隣り合っている場合は true を出力します

  8. 8

    同じ結果がある場合に表示されないオブジェクトの2つの配列を比較するlodashにありますか

  9. 9

    2つの値のそれぞれに配列を割り当てる(拡散する)とは異なります

  10. 10

    同じ配列値を2つの異なる変数に割り当てるにはどうすればよいですか

  11. 11

    異なる値を持ついくつかの同じキーを持つ以下の配列があります。PHPで同じキー値をそのキーと組み合わせるにはどうすればよいですか?私はWAMP、Codeigniterを使用しています

  12. 12

    インデックスが1つだけ更新されると、Pythonのnumpyzeros配列にすべての値に1が割り当てられます

  13. 13

    Python:他の2つの列の同じ行に「いいえ」の文字列が含まれている場合は、行から文字列値を削除します

  14. 14

    ソートされていない2つの配列AとBが与えられた場合、配列の1つだけをソートすることにより、合計(または差)が与えられたkに等しい要素のペアを見つけます。

  15. 15

    配列の値をCoreDataに保存する場合、1つの値のみが保存されます

  16. 16

    値が同じ場合は、Excelの列から一度に1つの値を割り当てます

  17. 17

    同じ長さのxとyの2つのNumPy配列がある場合、xがx_minとx_maxの間に収まるように、すべてのペア(x、y)を選択するにはどうすればよいですか?

  18. 18

    2つのオブジェクトの配列があります。これらの配列では、IDが同じである場合、IDを一致させたいのですが、同じIDの情報を組み合わせた新しい配列が必要です

  19. 19

    同じ長さの2つの配列。最初の配列値がtrueに等しい場合、2番目の配列から値を取得します

  20. 20

    動的に割り当てられた配列を出力すると、最後の値のみが出力されます

  21. 21

    Swift 5 [[object]]の名前に別の配列の1つ以上の値が含まれている場合

  22. 22

    値が同じである場合、配列によって形成される辞書の要素を削除します

  23. 23

    文の文字列を半分に分割して、それぞれが可能な限り同じ長さの2つの文字列の配列にする方法は?

  24. 24

    配列内のどこかに含まれている同じ値の2つと3つの配列の比較

  25. 25

    オブジェクトの2つのJavaScript配列が要素を共有している場合、1つの配列が参照されなくなったときに、すべての非共有メモリがガベージコレクションされますか?

  26. 26

    2つの配列から一致する値を見つけます。1つの配列にはhtml要素が含まれています-Javascript

  27. 27

    配列に1つの0の後に1つの1が順番に含まれている場合

  28. 28

    デコードされた場合、2つの異なるBASE 64エンコードされた文字列が同じ文字列になりますか?

  29. 29

    jQuery "extend"を使用して2つの配列を結合すると、1つの配列が返されます

ホットタグ

アーカイブ