如何从动态图创建出现矩阵?
How to create occurrence matrix from dynamic graph?
我有动态图的边列表,如下所示
G1=nx.read_edgelist('m_enron_employees_1Sorted.txt',create_using=nx.MultiGraph(), nodetype=int)
print(G1.edges())
[(13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48),
(13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48),
(13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48),
(13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48),
(13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48),
(13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48),
(13, 48), (13, 50), (13, 50), (13, 50), (13, 50), (13, 50), (13, 50),
(13, 50), (13, 50), (13, 50), (13, 50), (13, 50), (13, 50), (13, 67),
(13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67),
(13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67),
(13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67),
(13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67),
(13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67),
(13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67),
(13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 147),
(13, 147), (13, 147), (13, 147), (13, 147), (13, 147), (13, 147), (13,
147), (13, 147), (13, 147), (13, 147), (13, 147), (13, 147), (13,
147), (13, 147), (13, 147), (13, 147), (13, 147)]
这里我想创建一个出现矩阵,它捕获特定边缘出现的次数
我尝试了以下选项
count=0
tempo=-1
temp1=-1
app=[]
for edge in G1.edges():
if((temp0,temp1)==(edge[0], edge[1]))
count=count +1
else:
if count!=0:
app.append((edge, count))
temp0=edge[0]
temp1=edge[1]
count=1
但是,这种方法没有给出正确的结果
任何帮助将不胜感激
更易于使用 set
和内置 count
方法:
>>> edges = [(13, 48), (13, 48), ... ]
>>>
>>> freqs = {edge: edges.count(edge) for edge in set(edges)}
>>> freqs
{(13, 67): 49, (13, 48): 43, (13, 50): 12, (13, 147): 18}
>>> max(freqs, key=lambda k: freqs[k])
(13, 67)
不太确定“出现矩阵”是什么意思,因为看起来您正在做的只是计算每个边的频率。
我有动态图的边列表,如下所示
G1=nx.read_edgelist('m_enron_employees_1Sorted.txt',create_using=nx.MultiGraph(), nodetype=int)
print(G1.edges())
[(13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 48), (13, 50), (13, 50), (13, 50), (13, 50), (13, 50), (13, 50), (13, 50), (13, 50), (13, 50), (13, 50), (13, 50), (13, 50), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 67), (13, 147), (13, 147), (13, 147), (13, 147), (13, 147), (13, 147), (13, 147), (13, 147), (13, 147), (13, 147), (13, 147), (13, 147), (13, 147), (13, 147), (13, 147), (13, 147), (13, 147), (13, 147)]
这里我想创建一个出现矩阵,它捕获特定边缘出现的次数
我尝试了以下选项
count=0
tempo=-1
temp1=-1
app=[]
for edge in G1.edges():
if((temp0,temp1)==(edge[0], edge[1]))
count=count +1
else:
if count!=0:
app.append((edge, count))
temp0=edge[0]
temp1=edge[1]
count=1
但是,这种方法没有给出正确的结果
任何帮助将不胜感激
更易于使用 set
和内置 count
方法:
>>> edges = [(13, 48), (13, 48), ... ]
>>>
>>> freqs = {edge: edges.count(edge) for edge in set(edges)}
>>> freqs
{(13, 67): 49, (13, 48): 43, (13, 50): 12, (13, 147): 18}
>>> max(freqs, key=lambda k: freqs[k])
(13, 67)
不太确定“出现矩阵”是什么意思,因为看起来您正在做的只是计算每个边的频率。