Scipy разреженные матрицы - назначение и использование различных реализаций
Scipy имеет доступные различные типы разреженных матриц. Каковы наиболее важные различия между этими типами и какова разница в их предполагаемом использовании?
Я разрабатываю код в python на основе кода примера 1 в Matlab. В одном разделе кода используются разреженные матрицы, которые, похоже, имеют один (раздражающий) тип в Matlab, и я пытаюсь выяснить, какой тип я должен использовать 2 в python.
1: Это для класса. Большинство людей делают проект в Matlab, но мне нравится создавать ненужную работу и беспорядок - по-видимому.
2: Это академический вопрос: у меня есть код, который работает правильно с форматом CSR, но я интересен зная, что такое оптимальные способы использования.
Ответы
Ответ 1
Извините, если я не отвечаю на это достаточно полно, но, надеюсь, я могу дать некоторое представление.
CSC (сжатая разреженная колонка) и CSR (сжатая разреженная строка) более компактны и эффективны, но сложны для создания "с нуля". Coo (Координаты) и DOK (Словарь ключей) легче построить и затем могут быть преобразованы в CSC или CSR через matrix.tocsc()
или matrix.tocsr()
.
CSC более эффективен при доступе к векторам столбцов или столбцам, как правило, поскольку он хранится в виде массивов столбцов и их значений в каждой строке.
CSR-матрицы противоположны; хранятся в виде массивов строк и их значений в каждом столбце и более эффективны при доступе к строковым векторам или операциям строк.