压缩稀疏行矩阵 :: csr_matrix :: 奇怪的行为
Compressed Sparse Row Matrix :: csr_matrix :: odd behaviour
我一直在观察我的代码中的一些奇怪行为,这些行为一直困扰着我。以下...
from scipy.sparse import csr_matrix
A = csr_matrix([[1,2,0],[0,0,3],[4,0,5]])
B = A
B[0,0] = 99
我希望 A.toarray()
到 return 原始矩阵(没有更新的 99 值),但我实际上得到了这个
A.toarray()
Out:
array([[99, 2, 0],
[ 0, 0, 3],
[ 4, 0, 5]], dtype=int32)
怎么回事?
语句 b = a
给 b
与 a
相同的引用。
即,它们都引用内存中的同一个对象。
对一个所做的任何更改显然都会反映在另一个上,因为它们是相同的,而不仅仅是相等的。
改为使用 b=a.copy()
。这将传递给 b
a
的副本。
我一直在观察我的代码中的一些奇怪行为,这些行为一直困扰着我。以下...
from scipy.sparse import csr_matrix
A = csr_matrix([[1,2,0],[0,0,3],[4,0,5]])
B = A
B[0,0] = 99
我希望 A.toarray()
到 return 原始矩阵(没有更新的 99 值),但我实际上得到了这个
A.toarray()
Out:
array([[99, 2, 0],
[ 0, 0, 3],
[ 4, 0, 5]], dtype=int32)
怎么回事?
语句 b = a
给 b
与 a
相同的引用。
即,它们都引用内存中的同一个对象。
对一个所做的任何更改显然都会反映在另一个上,因为它们是相同的,而不仅仅是相等的。
改为使用 b=a.copy()
。这将传递给 b
a
的副本。