0
私のコードでは、私が悩まされているという奇妙な挙動を観察してきました。次...Compressed Sparse Row Matrix :: csr_matrix :: odd behavior
from scipy.sparse import csr_matrix
A = csr_matrix([[1,2,0],[0,0,3],[4,0,5]])
B = A
B[0,0] = 99
私は(ノー更新99値で)元の行列を返すようにA.toarray()
を期待する、しかし私は実際に取得し、この
A.toarray()
Out:
array([[99, 2, 0],
[ 0, 0, 3],
[ 4, 0, 5]], dtype=int32)
何が起こっているの?
「A」と「B」はメモリ内の同じオブジェクトへのポインタです。 'A is B'はTrueを返します。オブジェクトのメモリアドレスを取得するには、 'id(obj)'メソッドを使用します。 'id(A)'と 'id(B)'の結果は同じでなければなりません。 – Jakub
これは、Aが疎な行列ではないと思われます。どのようなコンテナタイプでもこの動作が見えます。 B = Aは同じオブジェクトへの参照をBに代入します。これらはインプレースで変更されているため、ここではB [0,0] =とA [0,0] =は全く同じです。 –
thanks chaps .... –