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


Python NetworkX to_numpy_array用法及代碼示例


本文簡要介紹 networkx.convert_matrix.to_numpy_array 的用法。

用法:

to_numpy_array(G, nodelist=None, dtype=None, order=None, multigraph_weight=<built-in function sum>, weight='weight', nonedge=0.0)

以 NumPy 數組的形式返回圖形鄰接矩陣。

參數

G圖形

NetworkX 圖用於構造 NumPy 數組。

nodelist列表,可選

行和列根據 nodelist 中的節點進行排序。如果 nodelistNone ,則排序由 G.nodes() 生成。

dtypeNumPy 數據類型,可選

用於初始化數組的 NumPy 數據類型。如果無,則使用 NumPy 默認值。如果 weight=None 可以構造 dtype,在這種情況下,dtype 字段名稱用於查找邊屬性。結果是一個結構化數組,其中 dtype 中的每個命名字段對應於該邊屬性的鄰接。有關詳細信息,請參閱示例。

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

是否在內存中以 C 或 Fortran-contiguous(行或列)順序存儲多維數據。如果無,則使用 NumPy 默認值。

multigraph_weight可調用的,可選的

確定如何處理多重圖中的權重的函數。該函數應接受一係列權重並返回單個值。默認是對多條邊的權重求和。

weight字符串或無可選(默認 = ‘weight’)

保存用於邊權重的數值的邊屬性。如果邊不具有該屬性,則使用值 1 代替。如果使用結構化數據類型,weight 必須是 None

nonedge數組 (默認 = 0.0)

用於表示鄰接矩陣中非邊的值。對應於非邊的數組值通常設置為零。但是,如果存在對應於實際邊的數組值也具有零值,則這可能是不可取的。如果是這樣,人們可能更喜歡非邊具有一些其他值,例如 nan

返回

ANumPy ndarray

圖鄰接矩陣

拋出

NetworkXError

如果 dtype 是結構化 dtype 並且 G 是多圖

ValueError

如果 dtype 是結構化 dtype 而 weight 不是 None

注意

對於有向圖,條目 i, j 對應於從 ij 的邊。

鄰接矩陣中的條目由weight 邊屬性給出。當一條邊沒有權重屬性時,條目的值設置為數字 1。對於多個(平行)邊,條目的值由 multigraph_weight 參數確定。默認是對每個平行邊的權重屬性求和。

nodelist 不包含 G 中的每個節點時,鄰接矩陣由 G 的子圖構建,該子圖由 nodelist 中的節點誘導。

用於圖中自循環邊的約定是將對角數組條目值分配給邊的權重屬性(如果邊沒有權重屬性,則為數字 1)。如果需要將邊權重加倍的替代約定,則可以將生成的 NumPy 數組修改如下:

>>> import numpy as np
>>> G = nx.Graph([(1, 1)])
>>> A = nx.to_numpy_array(G)
>>> A
array([[1.]])
>>> A[np.diag_indices_from(A)] *= 2
>>> A
array([[2.]])

例子

>>> G = nx.MultiDiGraph()
>>> G.add_edge(0, 1, weight=2)
0
>>> G.add_edge(1, 0)
0
>>> G.add_edge(2, 2, weight=3)
0
>>> G.add_edge(2, 2)
1
>>> nx.to_numpy_array(G, nodelist=[0, 1, 2])
array([[0., 2., 0.],
       [1., 0., 0.],
       [0., 0., 4.]])

此函數還可用於為具有結構化 dtype 的多個邊屬性創建鄰接矩陣:

>>> G = nx.Graph()
>>> G.add_edge(0, 1, weight=10)
>>> G.add_edge(1, 2, cost=5)
>>> G.add_edge(2, 3, weight=3, cost=-4.0)
>>> dtype = np.dtype([("weight", int), ("cost", float)])
>>> A = nx.to_numpy_array(G, dtype=dtype, weight=None)
>>> A["weight"]
array([[ 0, 10,  0,  0],
       [10,  0,  1,  0],
       [ 0,  1,  0,  3],
       [ 0,  0,  3,  0]])
>>> A["cost"]
array([[ 0.,  1.,  0.,  0.],
       [ 1.,  0.,  5.,  0.],
       [ 0.,  5.,  0., -4.],
       [ 0.,  0., -4.,  0.]])

相關用法


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