1

如何将重叠块状态中每个节点的块成员资格转换为 numpy 数组?

具体来说,当推断重叠的块对象时,看起来重叠的成员数组可以通过

blockobject = gt.minimize_blockmodel_dl(g, overlap = True)
blockpropertyvector = blockobject.get_overlap_blocks()[0]

要将其转换为 numpy 数组,似乎我们需要了解任何给定节点的最大成员数(我们称之为 max_overlaps),然后我们可以转换为二维数组

blockpropertyvector.get_2d_array(range(max_overlaps))

但现在我不确定如何解释结果。这个矩阵的第一行是否真的是每个节点的第一个成员分配?如果是这样,那么我想说第二行是节点的第二个成员分配(如果存在),否则为 0。但是 0 是一个可能的块号,那么我们如何知道第 0 个块是否包含重叠成员呢?

4

1 回答 1

1

实际上,通过这种方式,您将无法将缺少成员资格与成员资格与零组区分开来。

我认为您可以做的最简单的事情就是简单地遍历节点:

bv = state.get_overlap_blocks()[0]
b = zeros((g.num_vertices(), max_B))
for v in g.vertices():
    b[int(v),:len(b[v])] = bv[v].a + 1

在上面,值 0 意味着缺乏成员资格,而 r > 0 的值意味着组 r - 1 的成员资格。

于 2016-05-16T09:05:46.270 回答