簡體   English   中英

NetworkX MultiDiGraph:向現有節點添加新屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM