如何将重叠块状态中每个节点的块成员资格转换为numpy数组?
具体来说,在推断重叠块对象时,看起来可以使用
恢复重叠的成员资格数组blockobject = gt.minimize_blockmodel_dl(g, overlap = True)
blockpropertyvector = blockobject.get_overlap_blocks()[0]
要将其转换为numpy数组,似乎我们需要知道任何给定节点的最大成员数(让我们称之为max_overlaps)然后我们可以转换为2d数组
blockpropertyvector.get_2d_array(range(max_overlaps))
但现在我不确定如何解释结果。这个矩阵的第一行是每个节点的第一个成员资格分配,这是真的吗?如果是这样,那么我想说第二行是节点的第二个成员资格分配(如果存在),否则为0。但是0是一个可能的块号,那么我们如何知道0-i块是否包含重叠的成员资格呢?
答案 0 :(得分: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
使用上述值,零值表示缺少成员资格,值r> 1。 0表示r-1组的成员资格。