【问题标题】:How can I retrieve indptr, indices from scipy csr_matrix?如何从 scipy csr_matrix 检索 indptr、索引?
【发布时间】:2022-01-26 06:17:36
【问题描述】:

根据scipy.sparse.csr_matrixdocumentation,有很多方法可以创建csr_matrix。其中一种方法是将dataindptrindices 作为输入。我想知道是否有办法以相反的方向检索它们,即假设我创建了my_csr_matrix,如下所示:

>>> indptr = np.array([0, 2, 3, 6])
>>> indices = np.array([0, 2, 2, 0, 1, 2])
>>> data = np.array([1, 2, 3, 4, 5, 6])
>>> my_csr_matrix = csr_matrix((data, indices, indptr), shape=(3, 3))
>>> my_csr_matrix.toarray()
array([[1, 0, 2],
       [0, 0, 3],
       [4, 5, 6]])

问题是,如何在不事先明确知道 datadata 的信息的情况下从 my_csr_matrix 检索 indptr 和索引?

【问题讨论】:

  • csr_matrix 是一个类。它列出的属性可以像任何其他 python 类的属性一样访问。值得一提的是,稀疏矩阵通常是使用row/col/data 输入创建的。它们最容易理解。但是indptr/indices/data 属性的访问方式相同。实验

标签: python scipy sparse-matrix csr csc


【解决方案1】:

实际上只是my_csr_matrix.indptrmy_csr_matrix.indices。也可以通过my_csr_matrix.data获取数据数组。

这些属性记录在页面下方的“属性”标题下。

请注意,这些是稀疏矩阵表示使用的实际底层数组。修改这些数组将修改稀疏矩阵,除非您执行某些操作导致 CSR 矩阵分配新的底层数组。 (例如,my_csr_matrix[1, 1] = 7 会改变矩阵的稀疏结构并需要分配新的数组。)

【讨论】:

  • 非常感谢您提供如此明确的答案。我应该尝试仔细阅读整个文档。
猜你喜欢
  • 2023-03-17
  • 2014-10-22
  • 2020-02-01
  • 1970-01-01
  • 2019-05-24
  • 1970-01-01
  • 2015-08-02
  • 2016-03-28
  • 1970-01-01
相关资源
最近更新 更多