У меня есть матрица размером 20х20 следующего вида. Я хочу ускорить умножение матриц T в MCMC (цепь Маркова Монте-Карло). В каждом моделировании матрично-матричное умножение происходит почти в 360 раз. Его почти три диагноза, за исключением последнего столбца (s20), который всегда имеет значения.
s1 s2 s3 s4 ....... s20
-------------------------------------------
s1 | p11 p12 0 0 ...0... p1_20
s2 | p21 p22 p23 0 ...0... p2_20
s3 | 0 p32 p33 p34 ...0... p3_30
: |
s20| 0 ...0... 1
Мои вопросы:
Должен ли я заботиться об использовании разреженной матрицы вместо существующей плотной матрицы для этого размера? Будет ли разреженное представление в этом случае экономить время вычислений, кроме памяти, с учетом добавленных шагов преобразования в разреженный формат на каждом временном шаге?
Какое разреженное представление я должен использовать в этом конкретном случае ... это не диагональ, а почти
Какой алгоритм умножения разреженной матрицы следует использовать?
Есть ли в Python3 SciPy-ориентированное предложение с точки зрения разреженной матрицы и алгоритма умножения?