networkx.relabel.relabel_nodes
的用法。用法:
relabel_nodes(G, mapping, copy=True)
根據給定的映射重新標記圖 G 的節點。
- G:圖形
NetworkX 圖
- mapping:字典
以舊標簽為鍵,新標簽為值的字典。允許部分映射。允許將 2 個節點映射到單個節點。映射中的任何非節點鍵都將被忽略。
- copy:布爾(可選,默認=真)
如果 True 返回一個副本,或者如果 False 重新標記節點。
參數:
注意:
隻有映射中指定的節點才會被重新標記。映射中的任何非節點鍵都將被忽略。
關鍵字設置 copy=False 會修改圖形。 Relabel_nodes 通過從指定重新標記順序的
mapping
構建有向圖來避免命名衝突。命名衝突(例如 a->b、b->c)按順序排列,以便 “b” 在 “a” 重命名為 “b” 之前重命名為 “c”。在循環映射的情況下(例如 a->b、b->a),無法就地修改圖形並引發異常。在這種情況下,請使用 copy=True。如果多重圖上的重新標記操作會導致兩條或多條邊具有相同的源、目標和鍵,則必須為第二條邊分配一個新鍵以保留所有邊。新鍵設置為尚未用作這兩個節點之間邊的鍵的最小非負整數。請注意,這意味著非數字鍵可能會被數字鍵替換。
例子:
要創建一個新圖,其中節點根據給定字典重新標記:
>>> G = nx.path_graph(3) >>> sorted(G) [0, 1, 2] >>> mapping = {0: "a", 1: "b", 2: "c"} >>> H = nx.relabel_nodes(G, mapping) >>> sorted(H) ['a', 'b', 'c']
節點可以用任何可散列對象重新標記,包括數字和字符串:
>>> import string >>> G = nx.path_graph(26) # nodes are integers 0 through 25 >>> sorted(G)[:3] [0, 1, 2] >>> mapping = dict(zip(G, string.ascii_lowercase)) >>> G = nx.relabel_nodes(G, mapping) # nodes are characters a through z >>> sorted(G)[:3] ['a', 'b', 'c'] >>> mapping = dict(zip(G, range(1, 27))) >>> G = nx.relabel_nodes(G, mapping) # nodes are integers 1 through 26 >>> sorted(G)[:3] [1, 2, 3]
要執行部分就地重新標記,請提供僅映射節點子集的字典,並將
copy
關鍵字參數設置為 False:>>> G = nx.path_graph(3) # nodes 0-1-2 >>> mapping = {0: "a", 1: "b"} # 0->'a' and 1->'b' >>> G = nx.relabel_nodes(G, mapping, copy=False) >>> sorted(G, key=str) [2, 'a', 'b']
映射也可以作為函數給出:
>>> G = nx.path_graph(3) >>> H = nx.relabel_nodes(G, lambda x: x ** 2) >>> list(H) [0, 1, 4]
在多重圖中,將兩個或多個節點重新標記到同一個新節點將保留所有邊,但可能會在此過程中更改邊鍵:
>>> G = nx.MultiGraph() >>> G.add_edge(0, 1, value="a") # returns the key for this edge 0 >>> G.add_edge(0, 2, value="b") 0 >>> G.add_edge(0, 3, value="c") 0 >>> mapping = {1: 4, 2: 4, 3: 4} >>> H = nx.relabel_nodes(G, mapping, copy=True) >>> print(H[0]) {4: {0: {'value': 'a'}, 1: {'value': 'b'}, 2: {'value': 'c'}}}
這也適用於就地重新標記:
>>> G = nx.relabel_nodes(G, mapping, copy=False) >>> print(G[0]) {4: {0: {'value': 'a'}, 1: {'value': 'b'}, 2: {'value': 'c'}}}
相關用法
- Python NetworkX relaxed_caveman_graph用法及代碼示例
- Python NetworkX read_multiline_adjlist用法及代碼示例
- Python NetworkX read_weighted_edgelist用法及代碼示例
- Python NetworkX read_pajek用法及代碼示例
- Python NetworkX resource_allocation_index用法及代碼示例
- Python NetworkX read_graph6用法及代碼示例
- Python NetworkX read_graphml用法及代碼示例
- Python NetworkX reverse_view用法及代碼示例
- Python NetworkX read_sparse6用法及代碼示例
- Python NetworkX read_adjlist用法及代碼示例
- Python NetworkX read_gpickle用法及代碼示例
- Python NetworkX recursive_simple_cycles用法及代碼示例
- Python NetworkX restricted_view用法及代碼示例
- Python NetworkX read_gml用法及代碼示例
- Python NetworkX rescale_layout_dict用法及代碼示例
- Python NetworkX read_shp用法及代碼示例
- Python NetworkX reverse_cuthill_mckee_ordering用法及代碼示例
- Python NetworkX read_edgelist用法及代碼示例
- Python NetworkX random_partition_graph用法及代碼示例
- Python NetworkX random_shell_graph用法及代碼示例
- Python NetworkX random_degree_sequence_graph用法及代碼示例
- Python NetworkX random_geometric_graph用法及代碼示例
- Python NetworkX random_layout用法及代碼示例
- Python NetworkX ra_index_soundarajan_hopcroft用法及代碼示例
- Python NetworkX random_clustered_graph用法及代碼示例
注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.relabel.relabel_nodes。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。