我有两个稀疏*邻接矩阵A1
和A2
的type 'numpy.int64'
。 相应图的节点用整数标记,并且矩阵的索引对应于这些节点(矩阵值是节点之间的链接权重)。Python稀疏矩阵非零值交点
我正试图计算图形之间的相似性度量。要做到这一点,我需要找到每个图的子图的邻接矩阵,其中包含两个图共有的节点。 没有关于矩阵的等号大小,或它们之间的公共节点的保证。
结果应该是相同的邻接矩阵,其中不在两个图中的节点的值都等于零。
实施例:
A1:
array([[ 0, 1, 2, 1],
[ 1, 0, 0, 0],
[ 2, 0, 0, 0],
[ 1, 0, 0, 0]])
A2:
array([[ 0, 0, 1],
[ 0, 0, 0],
[ 1, 0, 0]])
结果:
A1':
array([[ 0, 0, 2, 0],
[ 0, 0, 0, 0],
[ 2, 0, 0, 0],
[ 0, 0, 0, 0]])
A2':
array([[ 0, 0, 1],
[ 0, 0, 0],
[ 1, 0, 0]])
我使用矩阵的尺寸是在10^5×10^5的顺序。由此产生的大小并不重要,我会在之后分割最小的大小。 我会多次重复这个操作,所以速度很重要。
尝试至今:
我可以得到普通节点由列表:
np.intersect1d(A1.nonzero()[0], A2.nonzero()[0])
但我无法找到使用此作为过滤器,为指数的值不会映射的方法在这个列表为0.
*我不认为我一定需要使用稀疏,但稍后可伸缩性是非常可取的。