Какое представление разреженной матрицы в SciPy для почти трехдиагонального умножения матрицы с дополнительным столбцом - PullRequest
0 голосов
/ 27 октября 2018

У меня есть матрица размером 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

Мои вопросы:

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

  2. Какое разреженное представление я должен использовать в этом конкретном случае ... это не диагональ, а почти

  3. Какой алгоритм умножения разреженной матрицы следует использовать?

  4. Есть ли в Python3 SciPy-ориентированное предложение с точки зрения разреженной матрицы и алгоритма умножения?

...