當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python NetworkX attr_matrix用法及代碼示例


本文簡要介紹 networkx.linalg.attrmatrix.attr_matrix 的用法。

用法:

attr_matrix(G, edge_attr=None, node_attr=None, normalized=False, rc_order=None, dtype=None, order=None)

使用 G 中的屬性返回 NumPy 矩陣。

如果隻傳入G,則構造鄰接矩陣。

令 A 為節點屬性 node_attr 的一組離散值。那麽 A 的元素代表構造矩陣的行和列。現在,遍曆 G 中的每條邊 e=(u,v) 並考慮邊屬性 edge_attr 的值。如果 ua 和 va 分別是 u 和 v 的節點屬性node_attr 的值,則將邊屬性的值添加到 (ua, va) 處的矩陣元素。

參數

G圖形

NetworkX 圖用於構造NumPy 矩陣。

edge_attrstr,可選

矩陣的每個元素表示其節點屬性對應於 matirx 的行/列的邊的指定邊屬性的運行總計。該屬性必須存在於圖中的所有邊上。如果沒有指定屬性,那麽我們隻計算節點屬性對應於矩陣元素的邊數。

node_attrstr,可選

矩陣中的每一行和每一列都代表節點屬性的一個特定值。該屬性必須存在於圖中的所有節點。注意,這個屬性的值應該是可靠的哈希值。因此,不建議使用浮點值。如果未指定屬性,則行和列將是圖的節點。

normalized布爾型,可選

如果為 True,則每行都通過其值的總和進行歸一化。

rc_order列表,可選

節點屬性值的列表。此列表指定數組的行和列的順序。如果沒有提供排序,那麽排序將是隨機的(也是一個返回值)。

返回

MNumPy 矩陣

屬性矩陣。

ordering列表

如果指定了rc_order,則隻返回矩陣。但是,如果 rc_order 為 None,則也返回用於構造矩陣的排序。

其他參數

dtypeNumPy 數據類型,可選

用於初始化數組的有效 NumPy dtype。請記住,如果要對數組進行規範化,某些 dtype 可能會產生意想不到的結果。參數傳遞給 numpy.zeros()。如果未指定,則使用 NumPy 默認值。

order{‘C’, ‘F’},可選

是否在內存中以 C 或 Fortran-contiguous(行或列)順序存儲多維數據。此參數傳遞給 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)
>>> nx.attr_matrix(G, rc_order=[0, 1, 2])
matrix([[0., 1., 1.],
        [1., 0., 1.],
        [1., 1., 0.]])

或者,我們可以獲得說明邊厚度的矩陣。

>>> nx.attr_matrix(G, edge_attr="thickness", rc_order=[0, 1, 2])
matrix([[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"]
>>> nx.attr_matrix(G, node_attr="color", normalized=True, rc_order=rc)
matrix([[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

最後,我們可以獲得節點顏色列出的總權重。

>>> nx.attr_matrix(G, edge_attr="weight", node_attr="color", rc_order=rc)
matrix([[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 # 沒有帶有藍色端點的邊

相關用法


注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.linalg.attrmatrix.attr_matrix。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。