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

esyap4oy  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(116)

我试图获取一个对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>
6yjfywim

6yjfywim1#

我认为您需要先将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)

相关问题