【发布时间】:2017-07-07 06:42:39
【问题描述】:
我一直在我的代码中观察到一些奇怪的行为,这些行为一直困扰着我。以下...
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() 返回原始矩阵(没有更新的 99 值),但我实际上得到了这个
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)的结果应该是一样的。 -
这似乎并不取决于 A 是一个稀疏矩阵。您将在任何容器类型中看到此行为。 B=A 将同一对象的引用分配给 B。由于这些已就地更改,
B[0,0]=和A[0,0]=在这里完全相同
标签: python python-3.x sparse-matrix