当我试图用cholmod分解CSC格式的大型稀疏矩阵时,我得到了一个断言错误。
以下是一个简化的示例:
import numpy as np
from scipy.sparse import coo_array
from sksparse.cholmod import cholesky
row = np.array([0, 1])
col = np.array([0, 1])
val = np.array([1., 1.])
A = coo_array((val, (row, col)), shape=(2, 2)).tocsc()
factor = cholesky(A)
这给了我以下错误:
/tmp/ipykernel_59957/2822312894.py:12: CholmodTypeConversionWarning: converting matrix of class csc_array to CSC format
factor = cholesky(A)
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
Cell In[17], line 12
7 val = np.array([1., 1.])
10 A = coo_array((val, (row, col)), shape=(2, 2)).tocsc()
---> 12 factor = cholesky(A)
File sksparse/cholmod.pyx:1189, in sksparse.cholmod.cholesky()
File sksparse/cholmod.pyx:1216, in sksparse.cholmod._cholesky()
File sksparse/cholmod.pyx:1126, in sksparse.cholmod._analyze()
File sksparse/cholmod.pyx:411, in sksparse.cholmod._check_for_csc()
AssertionError:
有人能告诉我我在这里做错了什么吗?
顺便说一句,按以下方式操作还可以:
import scipy.sparse as scsp
factor = cholesky(scsp.csc_matrix(np.array([[ 1., 0.],
[0., 1.]]), dtype=np.float64))
但这对于我的非常大的稀疏矩阵来说是低效的。