Scipy CSR稀疏矩阵实际上是COO?

2024-10-03 04:33:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近一直在研究稀疏矩阵。我的目标是以某种方式将图的邻接列表转换为CSR格式,定义如下:http://devblogs.nvidia.com/parallelforall/wp-content/uploads/2014/07/CSR.png。在

我看到的一个可能的选择是,我只需先构造一个NumPy矩阵,然后使用scipy.sparse.csr_matrix对其进行转换。问题是,SciPy中的CSR与link中讨论的CSR有些不同。我的问题是,这是否只是一个差异,我需要编写自己的解析器,或者SciPy实际上可以转换为链接中定义的CSR。在

关于这个问题,假设我有一个矩阵:

matrix([[1, 1, 0],
        [0, 0, 1],
        [1, 0, 1]])

CSR格式由两个数组组成,列(C)和行(R)。我努力让自己看起来像:

^{pr2}$

SciPy返回:

  (0, 0)    1
  (0, 1)    1
  (1, 2)    1
  (2, 0)    1
  (2, 2)    1

其中第二列与我的C相同,但这是我对COO格式的理解,而不是CSR。(这是使用csr_matrix(adjacency_matrix)函数完成的)。在


Tags: comhttp目标列表定义格式方式矩阵
1条回答
网友
1楼 · 发布于 2024-10-03 04:33:34

内部存储的内容和通过print(A)打印矩阵时所看到的内容是不同的(其中Acsr_matrix)。在

documentation中列出了属性。除此之外,还有以下三个属性:

data CSR format data array of the matrix
indices CSR format index array of the matrix
indptr CSR format index pointer array of the matrix

您可以通过A.dataA.indicesA.indptr来访问(和操作)它们。在

底线:scipy中的CSR格式是一种“真正的”CSR格式,您不需要编写自己的解析器(只要您不关心在您的情况下不必要的data数组)。
另请注意:CSR format中的矩阵总是由三个数组表示,而不是两个数组。在

相关问题 更多 >