在构建Scipy稀疏数组时,copy参数的功能是什么?
scipy.sparse.lil_matrix(arg1, shape=None, dtype=None, copy=False)
它似乎什么也没有做!
当我从另一个矩阵构建稀疏矩阵并明确设置copy=False时,更改一个矩阵不会更改另一个矩阵。
import scipy.sparse as sp
import numpy as np
A = sp.csc_matrix(np.array([[1,0],[0,0]]))
B = sp.csr_matrix(A, copy=False)
B[1,1] = 1 #editing B should change A but it does not
print A.data, B.data #these values are different
谢谢
del
的工作原理,但以下代码对我来说意味着即使指定了copy=False
,数据也会被复制:print S.todense();
S2 = sp.sparse.csr_matrix(S,copy=False);
del S.data,S.indices,S.indptr,S;
print S2.todense() # <-- 与第一个打印结果相同;
- gerowamdel S.data
时,相应的数组的引用计数将减少一,并且.data
属性将从对象中移除。如果没有其他对象指向此相同的数组,则引用计数将降至零,它将被垃圾回收。但是,如果其他对象仍然指向它,则该数组将不会被垃圾回收,即使您已经摆脱了属性并无法通过S
访问它,也会保留给S2
使用。 - Jaime