我有一个很大的稀疏矩阵 (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,所以感谢任何解释的帮助!
答案 0 :(得分:0)
稀疏数组 .sum()
返回 np.matrix
而不是 ndarray 并且它在索引时表现得很奇怪(它是 2d 而不是您可能期望的 1d 数组)。
把它变成一个数组并结合索引,它工作正常:
F = F[(F.sum(axis=1)>=50).A.flatten(), (F.sum(axis=0)>=150).A.flatten()]
。