我想请问一下,现在有三个包含两列节点的csv数据集:其中第一个是属于0-10分钟之内的节点与节点的联系。第二个是0-20分钟之内的节点与节点间的互动(包含0-10的节点相连),第三个是0-30之间的互动(包含0-10和10-20,也就是包含0-20)。
我想用python输出三个数据集的距离矩阵,第一个距离矩阵要求节点间如果相连的距离为1.第二个数据集要求节点之间如果在0-10分钟相连的,但是在10-20内没有联系,距离加1(在原来的基础上加1,比如0-10内节点a-b相连距离为1,但是在10-20没有a-b相连,则a-b的距离就为2),在0-10内没有相连的但是在10-20内新相连的距离也是为1(也就是在每个时间段内新出现的为1)。
同理,第三个距离矩阵要求节点之间如果在0-20分钟相连的,但是在20-30内没有联系,距离加1(在原来的基础上加1),如果在0-20没有相连的,但是在0-30内相连的,距离减1(0-20a-b距离为2(表示在这个时间段没有联系,但是在0-10有联系),0-30又有联系了距离=2-1=1)
现在我想的第一个距离矩阵这样:8_女子学院-10.csv'代表0-10内的联系。
问题:1.请问这个0-10内代码有问题吗?我觉得输出的距离矩阵不是很对
2.请问第二个和第三个时间段的距离矩阵该怎么修改呢?
edges = []
n = 239 #不同节点数
with open('./PT NODEXIN.csv',"rt", encoding="utf-8") as csvfile:
reader = csv.DictReader(csvfile)
nodelist = [row['node'] for row in reader]
max_value = max([int(i) for i in nodelist])
#print('最大节点编号:%d'%(max_value))
mymatrix1= np.zeros([max_value,max_value], dtype = int, order = 'C')#初始化邻接矩阵,无边为0 二行第一列表示节点编号2到节点编号1是否有边
with open('./8_女子学院-10.csv','r') as f:
data = f.readlines()
for line in data:
#print line
line = list(line.replace('\r','').replace('\n','').replace('\t','').split(','))
mymatrix1[int(line[0])-1][int(line[1])-1] = 1;#邻接矩阵有边为1
edges.append({int(line[0]),int(line[1])})
# 根据邻接矩阵生成距离矩阵
distance_matrix = np.zeros((n, n), dtype=int)
for i in range(n):
for j in range(i+1, n):
if mymatrix1[i][j] == 1:
distance_matrix[i][j] = 1
distance_matrix[j][i] = 1
print(distance_matrix)