python - 使用 bool 数组索引 SciPy 稀疏矩阵

标签 python indexing numpy scipy sparse-matrix

NumPy 数组可以使用 bool 数组进行索引,以选择与 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 的行为?

最佳答案

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

>>> rows.nonzero()
(array([0, 2]),)
>>> indices = rows.nonzero()[0]
>>> indices
array([0, 2])
>>> sparse[indices, :]
<2x100 sparse matrix of type '<type 'numpy.float64'>'
        with 6 stored elements in LInked List format>

关于python - 使用 bool 数组索引 SciPy 稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6408385/

相关文章:

python - 是否可以在docker下运行spark udf函数(主要是python)?

java - Lucene 6.0.0 从索引中删除文档

tomcat - 如何在 webapp 部署时创建 Lucene 内存索引

sql - 在 SQL 对象表中的子类型特定属性上创建索引

python - 形态侵 eclipse ——Scipy ndimage 和 Scikit image 的区别

python - 如何仅提取多行字符串的第一行

python - 使用一对一和外键字段创建新模型实例

python - 尝试在 Matplotlib 中绘制子图时,绘图绘制不正确

python - 在 python 中跟踪图像

python - asfortranarray 中的运行时警告