索引带有布尔数组的SciPy稀疏矩阵

时间:2011-06-20 08:08:46

标签: python indexing numpy scipy sparse-matrix

可以使用布尔数组索引NumPy数组,以选择与True条目对应的行:

>>> X = np.array([[1,2,3], [4,5,6], [7,8,9]])
>>> rows = np.array([True,False,True])
>>> X[rows]
array([[1, 2, 3],
       [7, 8, 9]])
>>> X[np.logical_not(rows)]
array([[4, 5, 6]])

但是SciPy稀疏矩阵似乎不可能;索引被视为数字索引,因此False选择第0行,True选择第1行。如何获得类似NumPy的行为?

1 个答案:

答案 0 :(得分:10)

您可以在布尔数组上使用np.nonzero(或ndarray.nonzero)来获取相应的数字索引,然后使用这些索引来访问稀疏矩阵。由于与密集ndarray相比,稀疏矩阵上的“花式索引”非常有限,因此需要解包由nonzero返回的行元组,并指定要使用{{1}检索所有列切片:

: