计算文件中每一行与其他行欧氏距离的最小值

 1 import sys
 2 # 1.打开文件并读取,采取sys在命令行传参
 3 f = open(sys.argv[1])
 4 w = open(sys.argv[2],'w+')
 5 
 6 f_r = f.readlines()
 7 
 8 i = 1
 9 for line in f_r:
10     line.strip()
11     i += 1
12 # 2.计算欧氏距离
13 def distance(i,j):
14     a_list = a.split()
15     b_list = b.split()
16     sum = 0
17     for i in range(len(a_list)):
18         sum += (float(a_list[i]-float(b_list[i]) ** 2
19         sum = sum ** 0.5
20     return sum
21 
22 b = 1
23 while b < a:
24     c = 1
25     lst = []
26     while c < a:
27         if c != b:
28             result = distance(dict_line[b],dict_line[c])
29         else:
30             result = 10000
31         lst.append(result)   # 得到列表,其索引+1 即为第二行行数
32         c += 1
33     # print(lst)
34     value = min(lst)
35     second = lst.index(value) + 1
36     w.write(str(b) + '\t' + str(second) + '\n')
37     b += 1
38 f.close()
39 w.close()

 

posted @ 2019-05-05 22:49  乐鱼费想  阅读(310)  评论(0)    收藏  举报