copy 参数在 scipy 稀疏数组构造中的作用是什么?
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
谢谢
最佳答案
CSC 和 CSR 矩阵都在内部表示为三个一维数组。这三个数组通常对于不同的格式是不同的,即使它们代表完全相同的数据。因此,您无法稀疏矩阵对象指向相同的数据但以不同的格式访问它。
copy
参数可以让您做的是让两个相同格式的稀疏矩阵对象指向相同的数据。例如:
a = sps.csr_matrix([[1, 0], [0, 0]])
b = sps.csr_matrix(a, copy=False)
>>> a.data
array([1])
>>> b.data
array([1])
>>> a[0, 0] = 2
>>> a.data
array([2])
>>> b.data
array([2])
这也有局限性,例如对于 CSR(和 CSC)格式,破坏稀疏结构将破坏数据的通用性,因为它需要实例化新数组,而不是简单地更改现有数组中的值:
>>> a[1, 1] = 5
>>> a.data
array([2, 5])
>>> b.data
array([2])
关于python - scipy 稀疏矩阵,复制参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16722316/