networkx.linalg.attrmatrix.attr_sparse_matrix
的用法。用法:
attr_sparse_matrix(G, edge_attr=None, node_attr=None, normalized=False, rc_order=None, dtype=None)
使用 G 中的屬性返回 SciPy 稀疏矩陣。
如果隻傳入
G
,則構造鄰接矩陣。令 A 為節點屬性
node_attr
的一組離散值。那麽 A 的元素代表構造矩陣的行和列。現在,遍曆G
中的每條邊 e=(u,v) 並考慮邊屬性edge_attr
的值。如果 ua 和 va 分別是 u 和 v 的節點屬性node_attr
的值,則將邊屬性的值添加到 (ua, va) 處的矩陣元素。- G:圖形
NetworkX 圖用於構造NumPy 矩陣。
- edge_attr:str,可選
矩陣的每個元素表示其節點屬性對應於 matirx 的行/列的邊的指定邊屬性的運行總計。該屬性必須存在於圖中的所有邊上。如果沒有指定屬性,那麽我們隻計算節點屬性對應於矩陣元素的邊數。
- node_attr:str,可選
矩陣中的每一行和每一列都代表節點屬性的一個特定值。該屬性必須存在於圖中的所有節點。注意,這個屬性的值應該是可靠的哈希值。因此,不建議使用浮點值。如果未指定屬性,則行和列將是圖的節點。
- normalized:布爾型,可選
如果為 True,則每行都通過其值的總和進行歸一化。
- rc_order:列表,可選
節點屬性值的列表。此列表指定數組的行和列的順序。如果沒有提供排序,那麽排序將是隨機的(也是一個返回值)。
- M:SciPy 稀疏矩陣
屬性矩陣。
- ordering:列表
如果指定了
rc_order
,則隻返回矩陣。但是,如果rc_order
為 None,則也返回用於構造矩陣的排序。
- dtype:NumPy 數據類型,可選
用於初始化數組的有效 NumPy dtype。請記住,如果要對數組進行規範化,某些 dtype 可能會產生意想不到的結果。參數傳遞給 numpy.zeros()。如果未指定,則使用 NumPy 默認值。
參數:
返回:
其他參數:
例子:
構造一個鄰接矩陣:
>>> G = nx.Graph() >>> G.add_edge(0, 1, thickness=1, weight=3) >>> G.add_edge(0, 2, thickness=2) >>> G.add_edge(1, 2, thickness=3) >>> M = nx.attr_sparse_matrix(G, rc_order=[0, 1, 2]) >>> M.toarray() array([[0., 1., 1.], [1., 0., 1.], [1., 1., 0.]])
或者,我們可以獲得說明邊厚度的矩陣。
>>> M = nx.attr_sparse_matrix(G, edge_attr="thickness", rc_order=[0, 1, 2]) >>> M.toarray() array([[0., 1., 2.], [1., 0., 3.], [2., 3., 0.]])
我們還可以為節點著色並詢問所有邊 (u,v) 上的概率分布,說明:
Pr(v 有顏色 Y | u 有顏色 X)
>>> G.nodes[0]["color"] = "red" >>> G.nodes[1]["color"] = "red" >>> G.nodes[2]["color"] = "blue" >>> rc = ["red", "blue"] >>> M = nx.attr_sparse_matrix(G, node_attr="color", normalized=True, rc_order=rc) >>> M.toarray() array([[0.33333333, 0.66666667], [1. , 0. ]])
例如,上麵告訴我們對於所有邊 (u,v):
Pr( v 是紅色 | u 是紅色) = 1/3 Pr( v 是藍色 | u 是紅色) = 2/3
Pr( v 是紅色 | u 是藍色) = 1 Pr( v 是藍色 | u 是藍色) = 0
最後,我們可以獲得節點顏色列出的總權重。
>>> M = nx.attr_sparse_matrix(G, edge_attr="weight", node_attr="color", rc_order=rc) >>> M.toarray() array([[3., 2.], [2., 0.]])
因此,所有邊 (u,v) 上的總權重,其中 u 和 v 具有顏色:
(red, red) is 3 # 唯一的貢獻來自邊 (0,1) (red, blue) is 2 # 來自邊 (0,2) 和 (1,2) 的貢獻 (blue, red) is 2 # 相同as (red, blue) since graph is undirected (blue, blue) is 0 # 沒有帶有藍色端點的邊
相關用法
- Python NetworkX attr_matrix用法及代碼示例
- Python NetworkX attribute_mixing_dict用法及代碼示例
- Python NetworkX attribute_mixing_matrix用法及代碼示例
- Python NetworkX attribute_assortativity_coefficient用法及代碼示例
- Python NetworkX average_degree_connectivity用法及代碼示例
- Python NetworkX all_simple_paths用法及代碼示例
- Python NetworkX add_star用法及代碼示例
- Python NetworkX add_path用法及代碼示例
- Python NetworkX all_pairs_dijkstra_path用法及代碼示例
- Python NetworkX average_clustering用法及代碼示例
- Python NetworkX arbitrary_element用法及代碼示例
- Python NetworkX average_neighbor_degree用法及代碼示例
- Python NetworkX all_pairs_shortest_path用法及代碼示例
- Python NetworkX all_node_cuts用法及代碼示例
- Python NetworkX articulation_points用法及代碼示例
- Python NetworkX asadpour_atsp用法及代碼示例
- Python NetworkX all_shortest_paths用法及代碼示例
- Python NetworkX all_simple_edge_paths用法及代碼示例
- Python NetworkX adjacency_graph用法及代碼示例
- Python NetworkX astar_path用法及代碼示例
- Python NetworkX all_pairs_bellman_ford_path用法及代碼示例
- Python NetworkX ancestors用法及代碼示例
- Python NetworkX average_shortest_path_length用法及代碼示例
- Python NetworkX all_topological_sorts用法及代碼示例
- Python NetworkX all_pairs_dijkstra用法及代碼示例
注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.linalg.attrmatrix.attr_sparse_matrix。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。