8

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

我也很感激一个指针,这些东西实际记录在哪里。目录中的示例 demo只解释了一部分,我看不到任何文档字符串。

4

1 回答 1

12

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

PETSc.Mat().createAIJ(size=(nrows,ncols), csr=(ai,aj,aa))

据此,在 PETSc 中aiaj是: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))

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

于 2013-03-15T22:50:30.500 回答