Разреженная матрица мощности матрицы в питоне - PullRequest
0 голосов
/ 08 сентября 2018

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

np.dot(np.linalg.matrix_power(TM, steps), p0)

Где TM - квадратная большая матрица (1024x1024 или больше), а число шагов - это количество раз, которое я хотел бы умножить на TM самостоятельно, обычно ~ 1000. p0 - вектор, сумма которого равна 1.

Я не могу понять, как это сделать для разреженных матриц, поэтому вместо этого мне осталось:

TM = sp.sparse.csc_matrix(TM)
p0 = sp.sparse.csc_matrix(p0)

for i in range(steps):
    p0 = sp.sparse.csr_matrix.dot(TM,p0)

p0 = p0.todense()

Что, конечно, вызывает замедление. Существует ли более быстрый способ умножения матриц такой величины на разреженные матрицы?

...