慕沐林林
当然,indptr 中的元素是按升序排列的。但是如何解释 indptr 行为呢?简而言之,直到 indptr 中的元素相同或不增加,您可以跳过稀疏矩阵的行索引。下面的例子说明了上面对 indptr 元素的解释:示例 1) 想象一下这个矩阵:array([[0, 1, 0], [8, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 7]])mat1 = csr_matrix(([1,8,7], [1,0,2], [0,1,2,2,2,3]), shape=(5,3))mat1.indptr# array([0, 1, 2, 2, 2, 3], dtype=int32)mat1.todense() # to get the corresponding sparse matrix例2)数组转CSR_matrix(稀疏矩阵已经存在的情况):arr = np.array([[0, 0, 0], [8, 0, 0], [0, 5, 4], [0, 0, 0], [0, 0, 7]])mat2 = csr_matrix(arr))mat2.indptr# array([0, 0, 1, 3, 3, 4], dtype=int32)mat2.indices# array([0, 1, 2, 2], dtype=int32)mat.data# array([8, 5, 4, 7], dtype=int32)
森栏
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])csr_matrix((data, indices, indptr), shape=(3, 3)).toarray()array([[1, 0, 2], [0, 0, 3], [4, 5, 6]])在上面来自 scipy 文档的示例中。数据数组包含按行遍历的稀疏矩阵中存在的非零元素。索引数组给出了每个非零数据点的列号。例如:-col[0] 表示数据中的第一个元素,即 1,col[2] 表示数据中的第二个元素,即 2,依此类推,直到最后一个数据元素,因此数据数组和索引数组的大小相同.indptr 数组基本上指示行的第一个元素的位置。它的大小比行数多一。例如:- indptr 的第一个元素是 0 表示存在于 data[0] 的 row[0] 的第一个元素,即“1”,indptr 的第二个元素是 2,表示存在 row[1] 中的第一个元素在 data[2] 处,即元素 '3',indptr 的第三个元素是 3,表示 row[2] 的第一个元素在 data[3] 处,即 '4'。希望你明白这一点。