对稀疏矩阵进行重新排序以最大化参考稀疏矩阵上的重叠

2024-05-13 23:01:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个二元平方稀疏矩阵a,可以看作是图的邻接矩阵。在

现在考虑第二个二进制平方稀疏矩阵B,它可能具有不同的维数。在

我想建立一个算法来重新排序矩阵A,或者矩阵A的一组元素,以便最大化与矩阵B的重叠。在

下面是一个例子:

我在python中创建了一个随机稀疏矩阵B:

import scipy.spatial as spatial
import matplotlib.pyplot as plt
import numpy

coords_B = numpy.random.uniform(size=(20,3))*20
pdistmat = spatial.distance.squareform(spatial.distance.pdist(coords_B))
B = (pdistmat <= 8)
matshow(B)
colorbar()

matrix B

现在我通过在B上添加噪声并添加一些行和列来构建矩阵A:

^{pr2}$

matrix A

现在我把矩阵A随机化了:

random_order = numpy.random.choice(A.shape[0], replace=False,
                                   size=A.shape[0])
A_randomized = A[random_order][:, random_order]
matshow(A_randomized)
colorbar()

A_randomized

我想重新排序A_randomized以最大限度地与B重叠,如下所示:

x, y = numpy.where(A==1)
scatter(y,30-x, label='A')
x, y = numpy.where(B==1)
x+=5
y+=5
scatter(y,30-x, marker='.', label='B')
legend()

enter image description here

我想在python中使用numpy和稀疏稀疏图书馆。在


Tags: importnumpysize排序asorder矩阵random