scipy稀疏矩阵作为petsc4py的输入

Raf*_*ter 6 python scipy petsc

我似乎无法找到一种方法如何有效地将scipy稀疏矩阵加载csr_matrix到例如petsc4py矩阵中PETSc.Mat().createAIJ.我找到了这个帖子,但是我无法应用它.

我也很欣赏这个东西实际记录的指针.demo目录中的示例 只解释了一个部分,我看不到任何文档字符串.

Jai*_*ime 8

您的链接说要在PETSc中创建稀疏矩阵,您应该使用如下命令:

PETSc.Mat().createAIJ(size=(nrows,ncols), csr=(ai,aj,aa))
Run Code Online (Sandbox Code Playgroud)

根据这个,在PETSc中说ai,aj并且aa是:

> i - row indices
> j - column indices
> a - matrix values
Run Code Online (Sandbox Code Playgroud)

这些是等价的,分别的.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))
Run Code Online (Sandbox Code Playgroud)

不幸的是,我自己无法测试.