data
是一个包含稀疏矩阵的所有非零元素的数组。indices
是一个将每个元素映射data
到稀疏矩阵中的列的数组。indptr
然后的元素映射data
和indices
所述稀疏矩阵的行。这是通过以下推理完成的:
- 如果稀疏矩阵有M行,
indptr
则是一个包含M+1 个元素的数组 - 对于第i行,
[indptr[i]:indptr[i+1]]
返回要取自第i行data
并indices
对应于第i行的元素的索引。所以假设indptr[i]=k
和indptr[i+1]=l
,对应于行i的数据将data[k:l]
在列indices[k:l]
。这是棘手的部分,我希望下面的例子有助于理解它。
编辑:data中
用字母替换了数字以避免在以下示例中混淆。
indptr = np.array([0, 1, 3, 4, 7, 8, 9, 11])
indices = np.array([5, 1, 6, 3, 3, 4, 5, 0, 5, 3, 5])
data = np.array([a, b, c, d, e, f, g, h, i, g, k])
注意: indptr
中的值必然会增加,因为indptr
(下一行)中的下一个单元格指的是该行中data
并indices
对应于该行的下一个值。