文本搜索 矩阵重建,文本矩阵重建,简述:一个含有如下格式的
文本搜索 矩阵重建,文本矩阵重建,简述:一个含有如下格式的
简述:
一个含有如下格式的文本文件:name.txt,一共line=2000行at1g12
at1g34
at2g52
.....
2.一个文件夹,含有n个文本,n = 20000。每个文本的名字格式如上述内容,如at2g52、at3g46,....;每个文本中含有2列,第一列仍为相同格式的名字,如at2g12,.....,第二列为相关系数。每个文本内有2万行。
object:对name.txt中的所有名字,构建一个2000 x 2000的矩阵,矩阵元素为相关系数。
目前用下面代码可实现(用line=10时测试成功,很快)
# -*-coding:utf-8 -*-# by csanmum# 程序思路:先构建一个方阵,再更改方阵中的元素,最后写入文本输出# 存在问题:当 line = 2k时,很久都不出结果。# 估计问题存在点:三个for循环(for循环本身很慢)import timestart_time = time.clock()import os,re,os.path,glob,networkx,numpyos.chdir("D:\\\\folder\\\\")file_list = glob.glob("*")def get_content(filename): content = open(filename).readlines() content_new = [] for e in content: e = e.rstrip("\\n") content_new.append(e) return content_newcon_list = get_content("D:\\\\name.txt")print len(con_list) # 2000 #create an square matrix, the element in diag are 1,others are 0;my_matrix = numpy.identity(len(con_list))for i in range(0,len(con_list)-1): e = con_list[i].capitalize() if e in file_list: # 2w file pcc_list = get_content(e) for j in range(i+1,len(con_list)): for ea in pcc_list: eb = ea.split("\\t") if con_list[j].capitalize() == eb[0]: my_matrix[i,j] = my_matrix[j,i] = eb[2] else: print "do not find this file: ",enumpy.savetxt("E:\\\\matrix.txt",my_matrix,"%5.3f")end_time = time.clock()print "cost time: ",(end_time - start_time)#该片段来自于http://byrx.net
相关内容
- 一个简单的二叉树实现,简单二叉树实现,[Python]代码
- Python unicode码转utf8,pythonutf8,[Python]代码de
- 一个非常高效的提取内容关键词的python代码,提取关键
- python使用连分数计算常数e,python分数常数e,# Calculatin
- python通过ftplib登录到ftp服务器,pythonftplib,import ftpli
- Python和Singleton (单件)模式实现代码,pythonsingleton,我
- 批量修改cisco交换机密码,修改cisco交换机,# -*- coding
- 根据mp3文件的tag重命名mp3文件,mp3文件tag重命名,此脚本
- 点灯游戏及其求解,点灯游戏求解,Python语言: 点灯
- python 多线程,python,求教如何控制并发线程的个
评论关闭