[英]NetworkX MultiDiGraph : Adding new attribute to existing node
所以我在嘗試 MultiDiGraph 時遇到了這種情況,我希望得到一些指導:
G = nx.MultiDiGraph()
setA= ['a','b','c','d','e','f']
G.add_nodes_from(setA,entity='typeA')
setB = ['a','x','y','z']
G.add_nodes_from(setB,entity='typeB')
print([node[0] for node in G.nodes(data='entity') if node[1]=='typeA'])
顯然,這會導致覆蓋節點 'a' 的 'entity' 屬性並打印 '['b', 'c', 'd', 'e', 'f']'
由於我懷疑這是 NetworkX 的一部分故意的,對於我想要實現的目標是否有任何可行的解決方法?
非常感謝~
我同意@ Νίκος Γιαλίτσης 。 One-Hot Encoding 是一種普遍可行的方式。 此外, networkx.MlutiDiGraph數據是與屬性 dict 綁定的節點(或邊元組),也就是說,任何 python dict 格式都是有意義的。 例如::
G = nx.MultiDiGraph()
setA = ['a','b','c','d','e','f']
G.add_nodes_from(setA, entity={"typeA":True, "typeB":False})
# or
entityA = {"typeA":True, "typeB":False}
G.add_nodes_from(setA, entity=entityA)
attr = {"entity": entityA} # or simply assign entityA to attr.
G.add_nodes_from(setA, **attr)
G.add_nodes_from(setA, entity=[True, False], entity_label=["typeA", "typeB"])
G.add_nodes_from(setA, entity=list(entityA.values()), entity_label=list(entityA.keys()))
……
那么問題仍然是如何獲取每個節點類型的值。 (為每種類型設置二進制權重,並計算二元異或可能是一個不錯的選擇。) PS:邊緣屬性可以以相同的方式添加。 屬性模式將擴展為實體類型圖的相鄰矩陣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.