Raf*_*ter 6 python scipy petsc
我似乎无法找到一种方法如何有效地将scipy稀疏矩阵加载csr_matrix到例如petsc4py矩阵中PETSc.Mat().createAIJ.我找到了这个帖子,但是我无法应用它.
我也很欣赏这个东西实际记录的指针.demo目录中的示例 只解释了一个部分,我看不到任何文档字符串.
您的链接说要在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)
不幸的是,我自己无法测试.