如何引用(和修改)scipy稀疏矩阵的切片



我正在尝试获取对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)

最新更新