我有一個名爲「cmp_twtt_amp_rho」的輸入文件,它的長度爲7795074行。 我想計算每行的聲速c,其中:Python:加快緩慢的循環計算(np.append)
c(i)= rho(i-1)* c(i-1)*( - 1- amp(i))/ rho (i)*(amp(i)-1)
使用初始猜測c = 1450。
我寫了一個for循環,我相信會的工作,但它得到增加與時間慢,以至於是不可設想的運行在它的當前格式。
有人可以幫我加快這段代碼嗎?
data=np.genfromtxt('./cmp_twtt_amp_rho')
cmp_no=data[:,[0]]
twtt=data[:,[1]]
amp=data[:,[2]]
rho=data[:,[3]]
cs=[]
for i in range(1,len(amp-1)):
if i == 1:
print "Using an initial guess of 1450 m/s"
c = (rho[i-1]*1450*(-1-amp[i]))/(rho[i]*(1-amp[i]))
cs = np.append(c,cs)
elif twtt[i] == 0:
print "Reached new cmp #: ",cmp_no[i],"as twwt has re-started at ",twtt[i]
c = 1450
cs = np.append(c,cs)
else:
print i
c = (rho[i-1]*cs[i-1]*(-1-amp[i]))/(rho[i]*(1-amp[i]))
cs = np.append(c,cs)
print min(cs), max(cs)
print len(cs)
如果您只是執行'cs.append(c)'而不是'cs = np.append(c,cs)',會發生什麼? – mgilson
您有符號錯誤。您帖子中的公式與代碼不匹配;公式表示爲'(amp(i) - 1)',代碼表示爲'(1 - amp [i])'。 – user2357112
道歉,代碼中的一種類型,公式是正確的。 – Kg123