Ответ 1
Может быть, это объяснение поможет понять концепцию:
data
- это массив, содержащий все ненулевые элементы разреженной матрицы.indices
- это массив, отображающий каждый элемент вdata
на его столбец в разреженной матрице.Затем
indptr
отображает элементыdata
иindices
в строки разреженной матрицы. Это сделано по следующим причинам:- Если разреженная матрица имеет M строк,
indptr
является массивом, содержащим M + 1 элементов - для строки i
[indptr[i]:indptr[i+1]]
возвращает индексы элементов, взятых изdata
иindices
, соответствующих строке i. Предположим, чтоindptr[i]=k
иindptr[i+1]=l
, данные, соответствующие строке i, будутdata[k:l]
в столбцахindices[k:l]
. Это сложная часть, и я надеюсь, что следующий пример поможет понять ее.
- Если разреженная матрица имеет M строк,
РЕДАКТИРОВАТЬ: я заменил числа в data
буквами, чтобы избежать путаницы в следующем примере.
Примечание: значения в indptr
обязательно увеличиваются, потому что следующая ячейка в indptr
(следующая строка) ссылается на следующие значения в data
и indices
, соответствующие этой строке.