Как преобразовать разреженную матрицу SciPy в словарь

#python #dictionary #scipy #sparse-matrix

#python #словарь #scipy #разреженная матрица

Вопрос:

Я ищу эффективный способ преобразования разреженной матрицы ( scipy.sparse.csr.csr_matrix ) в словарь Python.

Насколько я понимаю, разреженная матрица внутренне хранит данные в форме, подобной словарю, поэтому кажется, что такое преобразование должно быть тривиальным и быстрым.

Однако я не смог найти ни одного метода, который делает это.

Ответ №1:

Я думаю, вы можете преобразовать свою матрицу в формат разреженной матрицы на основе словаря ключей (сравните документацию scipy), а затем получить доступ к базовым свойствам словаря с помощью items метода:

 import numpy as np
from scipy.sparse import csr_matrix

c = csr_matrix(np.array([[1,2,3],
                         [4,5,6],
                         [7,8,9]])) # construct an example matrix
d = c.todok() # convert to dictionary of keys format
print(dict(d.items()))
  

Это выводит

{(0, 0): 1, (1, 0): 4, (2, 0): 7, (0, 1): 2, (1, 1): 5, (2, 1): 8, (0, 2): 3, (1, 2): 6, (2, 2): 9}