当我尝试计算csc_array的矩阵指数时,我得到了以下错误:
anaconda3/lib/python3.9/site-packages/scipy/sparse/_index.py:103:
SparseEfficiencyWarning: Changing the sparsity structure of a
csc_matrix is expensive. lil_matrix is more efficient.```
self._set_intXint(row, col, x.flat[0])
产生错误的代码是:
csc_t_M = t_M.tocsc()
sigma = scipy.sparse.linalg.expm(-csc_t_M)
t_M是一个dok_数组。
从错误中看,问题出在scipy.sparse包本身。有人知道如何修复这个问题吗?
非常感谢!
1条答案
按热度按时间6bc51xsx1#
sparse.linalg.expm
是一个复杂的函数,使用,如docs的Pade approximation
。从探索多年前,我记得它涉及到一个矩阵求逆。让我们用一个小矩阵来测试它:
使用
csr
:请注意,警告来自
spsolve
和splu
步骤。我注意到了警告,却没有得到警告:
它也适用于密集阵列:
如果我尝试更改
csc
矩阵的元素,则会收到警告: