繁体   English   中英

删除稀疏矩阵的行和列

[英]removing rows and columns of sparse matrix

我有一个大的稀疏矩阵(F)。 我希望能够对其进行一些过滤以进一步减少它。 我想删除所有符合以下条件的行/列。

  1. 删除行总和 < 50 的行
  2. 删除列总和 < 150 的列

我尝试了下面的代码,我认为它可以与索引一起使用,但出现维度错误:

F = F[F.sum(axis=1)>=50][F.sum(axis=0)>=150]
IndexError                                Traceback (most recent call last)
<ipython-input-9-e13bff9f8066> in <module>()
----> 1 F = F[F.sum(axis=1)>=50][F.sum(axis=0)>=150]
/usr/local/lib/python3.7/dist-packages/numpy/matrixlib/defmatrix.py in __getitem__(self, index)
    191 
    192         try:
--> 193             out = N.ndarray.__getitem__(self, index)
    194         finally:
    195             self._getitem = False

IndexError: too many indices for array: array is 2-dimensional, but 3 were indexed

我还在学习 Python 所以感谢任何帮助解释!

稀疏数组.sum()返回一个np.matrix而不是 ndarray 并且它的索引行为很奇怪(它是 2d 而不是您可能期望的 1d 数组)。

把它变成一个数组并结合索引,它工作正常:

F = F[(F.sum(axis=1)>=50).A.flatten(), (F.sum(axis=0)>=150).A.flatten()]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM