我似乎无法找到一种方法如何有效地将 scipy 稀疏矩阵(例如csr_matrix
)加载到 petsc4py 矩阵中,例如PETSc.Mat().createAIJ
. 我找到了这个线程,但我无法应用它。
我也很感激一个指针,这些东西实际记录在哪里。目录中的示例 demo
只解释了一部分,我看不到任何文档字符串。
我似乎无法找到一种方法如何有效地将 scipy 稀疏矩阵(例如csr_matrix
)加载到 petsc4py 矩阵中,例如PETSc.Mat().createAIJ
. 我找到了这个线程,但我无法应用它。
我也很感激一个指针,这些东西实际记录在哪里。目录中的示例 demo
只解释了一部分,我看不到任何文档字符串。
您的链接说要在 PETSc 中创建稀疏矩阵,您应该使用如下命令:
PETSc.Mat().createAIJ(size=(nrows,ncols), csr=(ai,aj,aa))
据此,在 PETSc 中,ai
和aj
是:aa
> i - row indices
> j - column indices
> a - matrix values
这些分别等同于 a 的.indptr
,.indices
和.data
属性,有关详细信息scypy.sparse.csr_matrix
,请参阅文档。
因此,如果您的链接正确,则以下内容应该有效:
>>> from petsc4py import PETSc
>>> import scipy.sparse
>>> csr_mat = scipy.sparse.rand(1000, 1000, density=0.001, format='csr')
>>> petsc_mat = PETSc.Mat().createAIJ(size=csr_mat.shape,
... csr=(csr_mat.indptr, csr_mat.indices,
... csr_mat.data))
不幸的是,我无法自己测试它。