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