我正在尝试获取对scipy稀疏矩阵的逐列切片的引用,并对其进行修改。我尝试了以下操作,但切片似乎返回了一个副本而不是引用(就像numpy行为一样(,因此原始矩阵没有被修改。
>>> import scipy.sparse as sp
>>> A=sp.csc_matrix((10, 100))
>>> B=A[:, 0:1]
>>> B[:,0]=1
>>> B
<10x1 sparse matrix of type '<class 'numpy.float64'>'
with 10 stored elements in Compressed Sparse Column format>
>>> A
<10x100 sparse matrix of type '<class 'numpy.float64'>'
with 0 stored elements in Compressed Sparse Column format>
我认为您需要首先将dtype更改为ndarray。试试这个:
import numpy as np
import scipy.sparse as sp
A=sp.csc_matrix((10, 100), dtype=np.int8).toarray()
B=A[:, 0:1]
B[:,0]=1
B
array([[1],
[1],
[1],
[1],
[1],
[1],
[1],
[1],
[1],
[1]], dtype=int8)