我有一个大的 scipy 稀疏对称矩阵,我需要通过获取块的总和来压缩它以生成一个新的更小的矩阵。
例如,对于一个 4x4 稀疏矩阵,AI 想要创建一个 2x2 矩阵 B,其中 B[i,j] = sum(A[i:i+2,j:j+2])。
目前,我只是逐块重新创建压缩矩阵,但这很慢。关于如何优化它的任何想法?
更新:这是一个运行良好的示例代码,但对于我想压缩为 10.000x10.000 的 50.000x50.000 的稀疏矩阵来说很慢:
>>> A = (rand(4,4)<0.3)*rand(4,4)
>>> A = scipy.sparse.lil_matrix(A + A.T) # make the matrix symmetric
>>> B = scipy.sparse.lil_matrix((2,2))
>>> for i in range(B.shape[0]):
... for j in range(B.shape[0]):
... B[i,j] = A[i:i+2,j:j+2].sum()