以下是自己写的一个python脚本,用来进行高斯展开的,可发现运行速度特别慢,短板应该是数值计算,请问有没有什么方式可以加快它的运行速度?另外,我一直是自学的,代码肯定有许多不...
以下是自己写的一个python脚本,用来进行高斯展开的,可发现运行速度特别慢,短板应该是数值计算,请问有没有什么方式可以加快它的运行速度?另外,我一直是自学的,代码肯定有许多不足之处,还望指点...
#!/usr/bin/python3.4
import numpy as np
import sys
def gaussian(start=0, end=10, step=0.5, parameter=('sigma', 0.1), inp=[]):
if parameter[0]=='sigma':
sigma=parameter[1]
elif parameter[0]=='FWHM':
sigma=parameter[1]/(2*np.sqrt(2*np.log(2)))
else:
sigma=1
print('sigma is set to 1')
i=start
outp=[]
while i<=end:
height=0
for j in inp:
try:
height+=j[1]*np.exp(-(j[0]-i)**2/(2*sigma**2))/(sigma*np.sqrt(2*np.pi))
except IndexError:
height+=np.exp(-(j[0]-i)**2/(2*sigma**2))/(sigma*np.sqrt(2*np.pi))
outp.append((i, height))
i+=step
return outp
f=open(sys.argv[1], 'r')
lines=f.readlines()
f.close()
inp=[]
for i in range(len(lines)):
hang=[]
for j in lines[i].split():
hang.append(float(j))
inp.append(hang)
outp=gaussian(float(sys.argv[2]), float(sys.argv[3]), float(sys.argv[4]), (sys.argv[5], float(sys.argv[6])), inp)
text=''
for i in range(len(outp)):
text+='%15.9f%15.9f\n' % (outp[i][0], outp[i][1])
w=open('gaussian.dat', 'w')
w.write(text)
w.close()
展开