[英]removing rows and columns of sparse matrix
我有一个大的稀疏矩阵(F)。 我希望能够对其进行一些过滤以进一步减少它。 我想删除所有符合以下条件的行/列。
我尝试了下面的代码,我认为它可以与索引一起使用,但出现维度错误:
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.