| 24小時(shí)熱門版塊排行榜 |
| 5 | 1/1 | 返回列表 |
| 查看: 2135 | 回復(fù): 9 | |||||
| 當(dāng)前只顯示滿足指定條件的回帖,點(diǎn)擊這里查看本話題的所有回帖 | |||||
yjcmwgk禁蟲 (文壇精英)
密度泛函·小卒
|
[求助]
用Python讀Gaussian的cube文件,速度很慢,怎么破?謝謝。。 已有4人參與
|
||||
|
向各位python大俠求教一個(gè)問題,謝謝各位! 我正在用python讀一個(gè)由Gaussian生成的cube文件。但是讀文件讀得非常慢,讀一個(gè)6M多的cube文件,居然用了3分鐘! 具體問題如下: 用cubefile來(lái)打開某個(gè)cube文件。然后繼續(xù) 我懷疑tmpline = tmplines[i-1]這句話拖累的速度?應(yīng)該如何修改?非常感謝高手幫助。 感謝! |
SOB 集錦 | 經(jīng)驗(yàn) | 雜書 |
|
你的代碼不pythonic,不易讀也很低效, 這里給個(gè)例子,不知道是不是你要的功能 def readcube(cubefile): cubedata = [] with open(cubefile) as f: lines = f.readlines() # if cubefile is large, read it in streaming or blocks # handle headers here for line in lines[2:]: for item in line.split(): cubedata.append(eval(item)) return cubedata if __name__ == '__main__': testfile = 'test.cube' data = readcube(testfile) print(len(data)) print(data[:10]) print(data[-10:]) |
禁蟲 (文壇精英)
密度泛函·小卒
木蟲 (正式寫手)
|
試試這個(gè),看看效果如何: [ code] tmplines = cubefile.readlines() tempstr = "".join(tmplines) #把list轉(zhuǎn)化為str,形式應(yīng)該是'num num ...num\nnum ...' tempstr = tempstr.replace('\n',' ') #把str中的'\n'替換為' ' tmpcubedata = tempstr.split(' ') #把str轉(zhuǎn)為list n=0 numcount=len(tmpcubedata) #list的數(shù)據(jù)總數(shù) for i in tmpcubedata: n+=1 if i%60000==0: print "Converting", cubefilename, "...... ", int(100.0*float(i)/float(numcount)), "%" #if i=="": #tmpcubedata.remove(i) #如果cubefile 文件中中間有空行,則需要這個(gè)功能 if tmpcubedata[-1]=="": del tmpcubedata[-1] #如果cubefile 文件以‘num\n‘結(jié)尾 print "Converting", cubefilename, "...... ", "100 %" [ /code] |
捐助貴賓 (著名寫手)
一名工程師@上海
|
用numpy和pandas模塊兒來(lái)處理大型數(shù)組,比只用for循環(huán)速度快幾十倍不止。python自帶的循環(huán)未經(jīng)優(yōu)化,很忌諱來(lái)處理大型數(shù)組! 希望對(duì)你有幫助。 |

| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 085600 286分 材料求調(diào)劑 +10 | 麻辣魷魚 2026-03-27 | 11/550 |
|
|---|---|---|---|---|
|
[考研] 291求調(diào)劑 +7 | Y-cap 2026-03-29 | 8/400 |
|
|
[考研] 343求調(diào)劑085601 +3 | 要努力學(xué)習(xí)x 2026-03-29 | 3/150 |
|
|
[考研] 329求調(diào)劑,一志愿西北工業(yè)大學(xué),材料工程(085601) +4 | 小小機(jī)靈蟲 2026-03-29 | 10/500 |
|
|
[考研] 一志愿:西北大學(xué),英一數(shù)一408-284分求調(diào)劑 +4 | 12.27 2026-03-27 | 4/200 |
|
|
[考研] 291求調(diào)劑 +5 | Y-cap 2026-03-29 | 6/300 |
|
|
[考研] 318一志愿吉林大學(xué)生物與醫(yī)藥 求調(diào)劑 +4 | 篤行致遠(yuǎn). 2026-03-28 | 4/200 |
|
|
[考研] 085600,專業(yè)課化工原理,321分求調(diào)劑 +5 | 大饞小子 2026-03-28 | 5/250 |
|
|
[考研] 一志愿211 初試270分 求調(diào)劑 +8 | 谷雨上岸 2026-03-23 | 9/450 |
|
|
[考研] 一志愿華北電力大學(xué)能動(dòng)專碩,293,求調(diào)劑 +3 | 15537177284 2026-03-23 | 5/250 |
|
|
[考研] 070300求調(diào)劑306分 +4 | 26要上岸 2026-03-27 | 4/200 |
|
|
[考研] 081200-314 +3 | LILIQQ 2026-03-27 | 4/200 |
|
|
[考研] 086502化學(xué)工程342求調(diào)劑 +6 | 阿姨復(fù)古不過(guò) 2026-03-27 | 6/300 |
|
|
[考研] 0703化學(xué)求調(diào)劑,各位老師看看我。! +5 | 祁祺祺 2026-03-25 | 5/250 |
|
|
[考研] 考研調(diào)劑 +10 | 呼呼?~+123456 2026-03-24 | 10/500 |
|
|
[考研] 0703化學(xué)一志愿南京師范大學(xué)303求調(diào)劑 +3 | zzffylgg 2026-03-24 | 3/150 |
|
|
[考研] 求調(diào)劑 +6 | 林之夕 2026-03-24 | 6/300 |
|
|
[考研] 281求調(diào)劑 +6 | Koxui 2026-03-24 | 7/350 |
|
|
[考研] 一志愿山東大學(xué)藥學(xué)學(xué)碩求調(diào)劑 +3 | 開開心心沒煩惱 2026-03-23 | 4/200 |
|
|
[考研] 求老師收我 +3 | zzh16938784 2026-03-23 | 3/150 |
|