我的主题标签共现网络以 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
提交
取消