如何从其 CSR 表示中恢复矩阵?

How to restore matrix from its CSR representation?

我不明白从 csr 表示中恢复矩阵的算法。例如我有这 3 个数组:

data = [1, 2, 3, 4, 1, 11]
ind = [0, 1, 3, 2, 1,  3]
indptr  = [0, 3, 4, 6]

我们表示的矩阵:

[[1, 2, 0, 3],
 [0, 0, 4, 0],
 [0, 1, 0, 11]]

我需要做什么才能在没有任何外部库的情况下从这 3 个数组恢复第二个矩阵?

indptr

  • 第一行 项目 0、1、2 组成 dataind - slice(0,3)
  • 第二行 dataind 的第 3 项组成 - slice(3, 4)
  • 第三行 项目 4,5 组成 dataind - slice(4,6)

这个csr只是告诉你非零值在哪里——ind是非零​​值的索引,data是该指数的价值。

第一行有

  • 索引 0、1、3 处的非零数据 - ind[slice(0,3)]
  • 这些索引处的数据是 1,2,3 - data[slice(0,3)]
  • 注意索引 2 丢失 - 它必须为零

除了只有三行非零数据(从indptr收集)并且任何行的最大索引为三之外,没有指示矩阵的size/dimensions所以必须有四列。