python将列表元素变为整形_python:如何将列表中的元素转换为无向图?

酷-代码正在运行,所以数据结构是清晰的!作为一种方法,我们为文章/作者和作者/合著者构建了联系矩阵。

作者列表:

如果你想描述文章和作者之间的关系,我想你需要每一篇文章的作者名单

authors = []

author_lists = [] #

for record in records:

au = record.get('AU', '?')

author_lists.append(au) #

for a in au:

if a not in authors: authors.append(a)

authors.sort()

print(authors)

麻木,大熊猫

-只是我习惯的工作方式

import numpy as np

import pandas as pd

import matplotlib.pylab as plt

AU = np.array(authors) # authors as np-array

NA = AU.shape[0] # number of authors

NL = len(author_lists) # number of articles/author lists

AUL = np.array(author_lists) # author lists as np-array

print('NA, NL', NA,NL)

连接性文章/作者

CON = np.zeros((NL,NA),dtype=int) # initializes connectivity matrix

for j in range(NL): # run through the article's author list

aul = np.array(AUL[j]) # get a single author list as np-array

z = np.zeros((NA),dtype=int)

for k in range(len(aul)): # get a singel author

z += (AU==aul[k]) # get it's position in the AU, add it up

CON[j,:] = z # insert the result in the connectivity matrix

#---- grafics --------

fig = plt.figure(figsize=(20,10)) ;

plt.spy(CON, marker ='s', color='chartreuse', markersize=5)

plt.xlabel('Authors'); plt.ylabel('Articles'); plt.title('Authors of the articles', fontweight='bold')

plt.show()

连接性作者/合著者

,得到的矩阵是对称的

df = pd.DataFrame(CON) # let's use pandas for the following step

ACON = np.zeros((NA,NA)) # initialize the conncetivity matrix

for j in range(NA): # run through the authors

df_a = df[df.iloc[:, j] >0] # give all rows with author j involved

w = np.array(df_a.sum()) # sum the rows, store it in np-array

ACON[j] = w # insert it in the connectivity matrix

#---- grafics --------

fig = plt.figure(figsize=(10,10)) ;

plt.spy(ACON, marker ='s', color='chartreuse', markersize=3)

plt.xlabel('Authors'); plt.ylabel('Authors'); plt.title('Authors that are co-authors', fontweight='bold')

plt.show()

用于图形

网络X

我认为你需要清楚的想法,你想要代表什么,因为有很多点和很多可能性(也许你会发布一个例子?)只有少数作者Circels在下面。

import networkx as nx

def set_edges(Q):

case = 'A'

if case=='A':

Q1 = np.roll(Q,shift=1)

Edges = np.vstack((Q,Q1)).T

return Edges

Q = nx.Graph()

Q.clear()

AT = np.triu(ACON) # only the tridiagonal is needed

fig = plt.figure(figsize=(7,7)) ;

for k in range (9):

iA = np.argwhere(AT[k]>0).ravel() # get the indices with AT{k}>0

Edges = set_edges(iA) # select the involved nodes and set the edges

Q.add_edges_from(Edges, with_labels=True)

nx.draw(Q, alpha=0.5)

plt.title('Co-author-ship', fontweight='bold')

plt.show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值