Конечно, элементы внутри 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)