【发布时间】:2015-10-22 07:43:36
【问题描述】:
我需要一个稀疏矩阵(我使用来自scipy.sparse 的Compressed Sparse Row Format (CSR))来进行一些计算。我以(data, (row, col)) 元组的形式拥有它。不幸的是,一些行和列都将为零,我想摆脱那些零。现在我有:
[In]:
from scipy.sparse import csr_matrix
aa = csr_matrix((1,2,3), ((0,2,2), (0,1,2))
aa.todense()
[Out]:
matrix([[1, 0, 0],
[0, 0, 0],
[0, 2, 3]], dtype=int64)
我想拥有:
[Out]:
matrix([[1, 0, 0],
[0, 2, 3]], dtype=int64)
在对象上使用eliminate_zeros() 方法后,我得到None:
[In]:
aa2 = csr_matrix.eliminate_zeros(aa)
type(aa2)
[Out]:
<class 'NoneType'>
为什么那个方法会把它变成None?
有没有其他方法可以获得稀疏矩阵(不必是 CSR)并轻松摆脱空行/列?
我正在使用 Python 3.4.0。
【问题讨论】:
-
该方法是否可能在原地运行,并修改了原始
aa变量?然后它不会返回任何东西(即None)。 -
就地。事实上,它在文档中是这样说的。
-
这不是 OP 想要做的。它会从
.data中删除不需要的0s,但不会更改尺寸。 -
elminate_zeros不会改变aa=sparse.csr_matrix(((1,2,3),((0,2,2),(0,1,2)))),因为它没有多余的 0。
标签: python-3.x scipy sparse-matrix