压缩稀疏行矩阵 :: 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 = aba 相同的引用。

即,它们都引用内存中的同一个对象。

对一个所做的任何更改显然都会反映在另一个上,因为它们是相同的,而不仅仅是相等的。

改为使用 b=a.copy()。这将传递给 b a 的副本。