【发布时间】:2018-09-21 03:20:10
【问题描述】:
我希望能够对 scipy 稀疏矩阵的列进行排序。 scipy 文档相当简洁,我看不到太多关于修改矩阵的内容。在 SO 我找到了这个post,但给出的答案返回了一个list
我要写的代码是
s = rand(4, 4, density=0.25, format='csc')
_,colSize = s.get_shape()
for j in range(0,colSize):
s.setcol(j, sorted(s.getcol(j), key=attrgetter('data'), reverse=True))
除了没有setcol 和sorted 不返回与getcol 相同的类型。
作为我想要得到的示例,如果我有输入
<class 'scipy.sparse.csc.csc_matrix'>
[[ 0. 0.33201655 0. 0. ]
[ 0. 0. 0. 0. ]
[ 0. 0.81332962 0. 0.50794041]
[ 0. 0.41478979 0. 0. ]]
那么我想要的输出是
[[ 0. 0.81332962 0. 0.50794041]
[ 0. 0.414789790. 0. 0. ]
[ 0. 0.332016550. 0. 0. ]
[ 0. 0. 0. 0. ]]
(不一定是 csc 矩阵,我认为这对于列操作会更好)
【问题讨论】:
-
Inserting null columns into a scipy sparse matrix in a specific order 探索了一些用于重新排序列的替代方法。但它不是就地的。
-
在您的示例数组中,所有非零值都是正数。你的实际数组是这种情况吗?
-
在进一步阅读中,您正在尝试做一些与我最近链接的答案完全不同的事情。但我会留下评论;它可能会提供一些关于稀疏矩阵的有用想法。
-
@Warren 这些值是事件计数,因此它们将是大于或等于零的整数。
标签: python-3.x scipy sparse-matrix