我的主題標簽共現網絡以 CSV 格式存儲為鄰接矩陣,如下所示。,#A,#B,#C,#D,#E,#F,#G,#H,#I,#J,#K#A,0,1,1,0,1,1,1,1,0,1,0#B,1,0,0,0,1,1,1,1,0,1,0#C,1,0,0,0,1,1,1,1,0,1,0...然后我使用此頁面作為參考, 從 CSV 文件中的鄰接矩陣繪制 NetworkX 圖形我想將此矩陣導入到networkx中,我嘗試了以下方法:import numpy as npimport networkx as nximport matplotlib.pyplot as pltfrom numpy import genfromtxtimport numpy as npmydata = genfromtxt('data.csv', delimiter=',')但我只得到這個:print(mydata)print(type(mydata))[nan nan]<class 'numpy.ndarray'>如何正確導入數據,我想使用python管道計算網絡中每個節點的度中心性。導入是第一步。
2 回答

慕工程0101907
TA貢獻1887條經驗 獲得超5個贊
該numpy.genfromtxt
函數有一個名為 comments 的可選參數,默認設置為"#"
。
comments : str, optional The character used to indicate the start of a comment. All the characters occurring on a line after a comment are discarded
換句話說,numpy 認為您的整個文件包含注釋和空行。您必須重命名行和列標識符,或者必須將 comments 參數設置為其他值,例如"*"

紫衣仙女
TA貢獻1839條經驗 獲得超15個贊
.csv您可能會發現將文件讀入 pandas 數據幀并從中創建圖形要簡單得多,其中直接包含節點名稱:
import pandas as pd
df = pd.read_csv(s, sep=',')
G = nx.from_pandas_adjacency(df)
使用上述數據框的示例運行:
from io import StringIO
s = StringIO('''
#A,#B,#C,#D,#E,#F,#G,#H,#I,#J,#K
#A,0,1,1,0,1,1,1,1,0,1,0
#B,1,0,0,0,1,1,1,1,0,1,0
#C,1,0,0,0,1,1,1,1,0,1,0
''')
df = pd.read_csv(s, sep=',')
G = nx.from_pandas_adjacency(df)
G.edges()
# EdgeView([('#A', '#B'), ('#A', '#C')])
由于數據框必須是方形的,因此數據框已被剪切到第三列。但希望您看到這種方式會變得更加容易。
添加回答
舉報
0/150
提交
取消