F是CSR稀疏矩阵。
(0, 0) 28.9009663001
(0, 1) -9.21359549996
...
(7, 6) -10.2135955
(7, 7) 30.9009663001
C也是CSR稀疏矩阵。
(0, 0) 1.0782887739
(1, 0) -1.33369825452
(2, 0) 1.74824228278
(3, 0) -2.55552434318
(4, 0) 3.08435514293
(5, 0) -1.94369861339
(6, 0) 1.47753839244
(7, 0) -2.09583584401
P = spsolve(F,C)输出如下:
[ 0.02897775 -0.02418963 0.03217452 -0.0457709 0.06740877 -0.03168885
0.01767905 -0.06140939]
为什么即使F和C都是稀疏矩阵,输出也是矢量? Scipy参考指南说“如果C是矢量,则输出是矢量。” 但现在C很稀疏。但输出仍然是矢量形式。
我想我可以只是sparse.csr_matrix(P)。但它会降低速度吗?
答案 0 :(得分:0)
这是因为spsolve将稀疏列矩阵(如C
)转换为密集向量:https://github.com/scipy/scipy/blob/v0.13.0/scipy/sparse/linalg/dsolve/linsolve.py#L92
无论如何,看起来您的输出是密集的,因此将其转换为稀疏表示只会使事情变慢。