【发布时间】:2013-12-03 12:35:01
【问题描述】:
我在 0.10.0 和 0.10.1 中遇到了对 scipy 稀疏矩阵进行切片的不同之处。考虑以下代码:
from numpy import array, ravel
from scipy.sparse import csr_matrix
mat = csr_matrix(array([[1, 0, 0], [0,1,0], [1,0,0]]))
desired_cols = ravel(mat.sum(0)) > 0
print mat[:, desired_cols].A
在 scipy 0.10.0 中,我得到了我期望得到的结果:
[[1 0]
[0 1]
[1 0]]
在 0.10.1 和 0.12.0 中,我得到了
[[0 0 1]
[1 1 0]
[0 0 1]]
我不确定这是错误还是我做错了什么。我使用coo_matrix 和csc_matrix 得到了相同的结果。
我正在尝试从矩阵中删除所有总和为 0 的行。我知道csr_matrix 不支持高效的列切片,我不应该这样。
【问题讨论】:
-
在这些情况下
desired_cols是什么。在最近的 scipy (0.13.0) 中,结果与您的第一个 (0.10.0) 匹配。如果您想在版本中追踪这么远的更改,您可能必须深入研究 scipy 的 github 源代码。
标签: python scipy slice sparse-matrix