这个问题与this相同,只是一个稀疏矩阵(scipy.sparse)。链接问题的解决方案使用了与稀疏矩阵不兼容的索引方案。
对于上下文,我正在为大型离散PDE构造雅可比行列式,因此在这种情况下,B
矩阵包含各种相关的部分项,而A
将是牛顿定律需要反转的完整雅可比行列方法近似。在大型网格上,A
太大了,无法容纳在内存中,因此我想使用稀疏矩阵。
我想用以下结构构造一个数组:
A[i,j,i,j,] = B[i,j]
和所有其他条目0:A[i,j,l,k]=0 # (i,j) =\= (l,k)
即如果我构造了B
矩阵,该如何创建矩阵A
,最好以向量化的方式创建。
明确地,让B = [[1,2],[3,4]]
然后:
A[1,1,:,:]=[[1,0],[0,0]]
A[1,2,:,:]=[[0,2],[0,0]]
A[2,1,:,:]=[[0,0],[3,0]]
A[2,2,:,:]=[[0,0],[0,4]]