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


Python NetworkX from_numpy_array用法及代碼示例


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

用法:

from_numpy_array(A, parallel_edges=False, create_using=None)

從 2D NumPy 數組返回圖形。

2D NumPy 數組被解釋為圖形的鄰接矩陣。

參數

A一個 2D numpy.ndarray

圖的鄰接矩陣表示

parallel_edges布爾值

如果這是真的,create_using 是一個多重圖,而A 是一個整數數組,那麽數組中的條目 (i, j) 被解釋為連接圖中頂點 ij 的平行邊的數量。如果為 False,則數組中的條目被解釋為連接頂點的單條邊的權重。

create_usingNetworkX 圖形構造函數,可選(默認=nx.Graph)

要創建的圖表類型。如果是圖形實例,則在填充之前清除。

注意

對於有向圖,明確提及create_using=nx.DiGraph,A 的條目 i,j 對應於從 i 到 j 的邊。

如果 create_using networkx.MultiGraph networkx.MultiDiGraph parallel_edges 是 True ,並且 A 的條目是類型 int ,那麽這個函數返回一個多重圖(與 create_using 的類型相同)平行邊。

如果create_using 表示無向多重圖,則僅將數組A 的上三角形指示的邊添加到圖中。

如果 NumPy 數組的每個數組條目都有一個數據類型,它將被轉換為適當的 Python 數據類型。

如果 NumPy 數組具有用戶指定的複合數據類型,則數據字段的名稱將用作生成的 NetworkX 圖形中的屬性鍵。

例子

邊上的簡單整數權重:

>>> import numpy as np
>>> A = np.array([[1, 1], [2, 1]])
>>> G = nx.from_numpy_array(A)
>>> G.edges(data=True)
EdgeDataView([(0, 0, {'weight': 1}), (0, 1, {'weight': 2}), (1, 1, {'weight': 1})])

如果create_using 表示多重圖並且數組隻有整數條目並且parallel_edges 為False,則條目將被視為連接節點的邊的權重(不創建平行邊):

>>> A = np.array([[1, 1], [1, 2]])
>>> G = nx.from_numpy_array(A, create_using=nx.MultiGraph)
>>> G[1][1]
AtlasView({0: {'weight': 2}})

如果create_using 表示多重圖並且數組隻有整數條目並且parallel_edges 為True,則條目將被視為連接這兩個頂點的平行邊的數量:

>>> A = np.array([[1, 1], [1, 2]])
>>> temp = nx.MultiGraph()
>>> G = nx.from_numpy_array(A, parallel_edges=True, create_using=temp)
>>> G[1][1]
AtlasView({0: {'weight': 1}, 1: {'weight': 1}})

用戶定義的邊複合數據類型:

>>> dt = [("weight", float), ("cost", int)]
>>> A = np.array([[(1.0, 2)]], dtype=dt)
>>> G = nx.from_numpy_array(A)
>>> G.edges()
EdgeView([(0, 0)])
>>> G[0][0]["cost"]
2
>>> G[0][0]["weight"]
1.0

相關用法


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