2016-05-13 82 views
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-i塊是否包含重疊的成員資格?

回答

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的值> 0意味着籍R組 - 1.

+0

我認爲在最後一個字符串中的正確選擇是: ':len(bv [v] .a)'而不是':len(b [v])'因爲每次返回最後一個'max_B'值 – lucidyan